# Spring / ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… - ์ƒ์„ฑ์ž, ์ˆ˜์ •์ž, ํ•„๋“œ, ๋ฉ”์†Œ๋“œ
Study Repository

Spring / ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… - ์ƒ์„ฑ์ž, ์ˆ˜์ •์ž, ํ•„๋“œ, ๋ฉ”์†Œ๋“œ

by rlaehddnd0422

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…๋ฐฉ๋ฒ•

ํฌ๊ฒŒ 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

1. ์ƒ์„ฑ์ž ์ฃผ์ž… 

2. sertter ์ฃผ์ž…

3. ํ•„๋“œ ์ฃผ์ž…

4. ๋ฉ”์†Œ๋“œ ์ฃผ์ž…

 

1. ์ƒ์„ฑ์ž ์ฃผ์ž…

์ƒ์„ฑ์ž ์ฃผ์ž… ๋ฐฉ์‹์€ ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•ด์˜จ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ ์˜์กด ๊ด€๊ณ„๋ฅผ ์ฃผ์ž… ๋ฐ›๋Š” ๋ฐฉ๋ฒ•.

@Component
public class OrderServiceImp implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;
    
    @Autowired
    public OrderServiceImp(MemberRepository memberRepository, DiscountPolicy discountPolicy)
    {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }
}

 

ํŠน์ง•

์ƒ์„ฑ์ž ํ˜ธ์ถœ์‹œ์ ์—์„œ ๋”ฑ 1๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋จ.

๋ถˆ๋ณ€, ํ•„์ˆ˜ ์˜์กด๊ด€๊ณ„์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

 

Tip : ์ƒ์„ฑ์ž ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ๊ฒฝ์šฐ @Autowired๋ฅผ ์ƒ๋žตํ•ด๋„ ์ž๋™ ์ฃผ์ž…๋œ๋‹ค. ๋ฌผ๋ก  ์Šคํ”„๋ง ๋นˆ์— ํ•œํ•ด์„œ

 

2. setter ์ฃผ์ž… 

setter๋ผ ๋ถˆ๋ฆฌ๋Š” ํ•„๋“œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ˆ˜์ •์ž ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•.

ํŠน์ง•

- ์„ ํƒ, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์˜์กด๊ด€๊ณ„์— ์‚ฌ์šฉ

- ์ž๋ฐ”๋นˆ ํ”„๋กœํผํ‹ฐ ๊ทœ์•ฝ์˜ ์ˆ˜์ •์ž ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

 

@Component
public class OrderServiceImp implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;

    @Autowired
    public void setMemberRepository(MemberRepository memberRepository)
    {
        this.memberRepository = memberRepository;
    }

    @Autowired
    public void setDiscountPolicy(DiscountPolicy discountPolicy)
    {
        this.discountPolicy = discountPolicy;
    }

์ฐธ๊ณ  : @Autowired์˜ ๊ธฐ๋ณธ ๋™์ž‘์€ ์ฃผ์ž…ํ•  ๋Œ€์ƒ์ด ์—†์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฃผ์ž…ํ•  ๋Œ€์ƒ์ด ์—†์–ด๋„ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด @Autowired(required = false) ๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

3. ํ•„๋“œ ์ฃผ์ž…

์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํ•„๋“œ์— ๊ทธ๋ƒฅ ๋ฐ”๋กœ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

@Component
public class OrderServiceImp implements OrderService{
    
    @Autowired private MemberRepository memberRepository;
    @Autowired private DiscountPolicy discountPolicy;
    

์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์™ธ๋ถ€์—์„œ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ํž˜๋“ค๋‹ค๋Š” ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์žˆ๋‹ค.

์‚ฌ์šฉํ•˜์ง€ ๋ง์ž.

 

DI ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์—†๋Š” ์ˆœ์ˆ˜ ์ž๋ฐ”์ฝ”๋“œ์—์„œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

์ˆœ์ˆ˜ ์ž๋ฐ”์ฝ”๋“œ์—์„œ๋Š” @Autowired๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š์•„ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ์•ˆ๋˜์–ด ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

 

@Test
void filedInjectionTest()
{
    OrderServiceImp orderServiceImp = new OrderServiceImp();
    orderServiceImp.setMemberRepository(new MemoryMemberRepository());
    orderServiceImp.setDiscountPolicy(new FixDiscountPolicy());

    Member member = new Member(1L,"kimdongwoong",Grade.VIP);
    MemberRepository memberRepository = ac.getBean(MemberRepository.class);
    memberRepository.save(member);
    Order itemA = orderService.createOrder(1L, "itemA", 1000);
    System.out.println(itemA);
    
}

์ด์™€ ๊ฐ™์€ ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—๋Š” ๋‹น์—ฐํžˆ @Autowired๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ setter๋ฅผ ํ†ตํ•ด ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. @SpringBootTest ์ฒ˜๋Ÿผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ…Œ์ŠคํŠธ์— ํ†ตํ•ฉํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

4. ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ ์ฃผ์ž…

์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ฃผ์ž… ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ง•

1. ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ํ•„๋“œ๋ฅผ ์ฃผ์ž…๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

2. ์ž˜ ์‚ฌ์šฉํ•˜์ง„ ์•Š๋Š”๋‹ค.

@Component
public class OrderServiceImp implements OrderService {
    private MemberRepository memberRepository;
    private DiscountPolicy discountPolicy;

    @Autowired
    public void Autowired_method1(MemberRepository memberRepository, DiscountPolicy discountPolicy)
    {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }


 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ