1. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์
์ปดํฌ๋ํธ ์ค์บ์ ์๋ฆฌ
@Component ์ด๋ ธํ ์ด์ ์ด ์ ์ธ๋์ด ์์ผ๋ฉด ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก
- @Controller ์ปจํธ๋กค๋ฌ๊ฐ ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก๋ ์ด์ ๋ ์ปดํฌ๋ํธ ์ค์บ ๋๋ฌธ! (@Controller ์ด๋ ธํ ์ด์ ์ ์ดํด๋ณด๋ฉด @Component๊ฐ ์ ์ธ๋ ๊ฒ์ ๋ณผ ์ ์์)
- @Service, @Repository๋ ๋ง์ฐฌ๊ฐ์ง๋ก @Component๊ฐ ์ ์ธ๋์ด ์์ด ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก ๋๋ค.
์์
- OrderController.java
@Controller
public class OrderController {
private final OrderService orderService;
@Autowired
public OrderController(OrderService orderService) {
this.orderService = orderService;
}
}
- OrderService.java
@Service
public class OrderService {
private final OrderRepository orderRepository;
@Autowired
public OrderService(OrderRepository orderRepository) {
orderRepository = orderRepository;
}
}
์์ฑ์์ @Autowired๊ฐ ์์ผ๋ฉด ์คํ๋ง์ด ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์์ ์ฐพ์์ ๊ฐ์ฒด ์์ฑ ์์ ์ ํด๋น ๋น์ ์ฐพ์์ ์ฃผ์ ํ๋ค. ์์ฑ์๊ฐ ํ๋๋ง ์์ผ๋ฉด ์๋ต ๊ฐ๋ฅ! -> ์ด๋ ๊ฒ ๊ฐ์ฒด์ ์์กด ๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ DI๋ผ๊ณ ํ๋ค!
์ฐธ๊ณ : @Autowired ๋ฅผ ํตํ DI๋ @Controller , @Service ๋ฑ๊ณผ ๊ฐ์ด ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์์๋ง ๋์ํ๋ค. ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ์ง ์๊ณ ๋ด๊ฐ ์ง์ ์์ฑํ ๊ฐ์ฒด์์๋ ๋์ํ์ง ์๋๋ค.
- OrderRepository.java
@Repository
public class OrderRepository {}
์ด๋ ๊ฒ ์ค์ ํ๋ฉด OrderController - > OrderService -> OrderRepository๊ตฌ์กฐ๋ก ์คํ๋ง ์ปจํ ์ด๋์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋๋ค.
2. ์๋ฐ ์ฝ๋๋ก ์ง์ ์คํ๋ง ๋น ๋ฑ๋กํ๊ธฐ
OrderService.java์ OrderRepository.java์ @Service, @Repository, @Autowired ์ด๋ ธํ ์ด์ ์ ์ ๊ฑฐํ๋ค. (OrderController.java๋ ์ ์ง)
์์
- OrderConfig.java
@Configuration
public class OrderConfig {
@Bean
public OrderService orderService() {
return new OrderService(orderRepository());
}
@Bean
public OrderRepository orderRepository() {
return new OrderRepository();
}
}
@Configuration ์ด๋ ธํ ์ด์ ์ด ์ ์ธ๋ ํด๋์ค๋ฅผ ์์ฑํ๊ณ , ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๊ณ ์ ํ๋ ๋ฉ์๋์ @Bean ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํ๋ฉด, ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋๋ค.
3. XML๋ก ์ค์
application.xml์ bean์ ์ง์ ๋ฑ๋กํ ์ ์์ผ๋ ์ต๊ทผ์๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค.
ํ์ง๋ง ์์ง ๋ง์ ๋ ๊ฑฐ์ ํ๋ก์ ํธ๊ฐ XML๋ก ๋์ด ์๊ธฐ๋ ํ๊ณ , ์ปดํ์ผ ์์ด ๋น ์ค์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
<beans ...>
<bean id="orderService" class="com.test.order.OrderService">
<constructor-arg name="orderRepository" ref="orderRepository"/>
</bean>
<bean id="orderRepository" class="com.test.order.OrderRepository">
</bean>
</beans>
'๊ฐ๋ฐ > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] ๋๊ธฐ ๋ฐฉ์๊ณผ ๋น๋๊ธฐ ๋ฐฉ์์ ์ฐจ์ด์ (3) | 2022.05.04 |
---|---|
[Spring Framework] CORS ์ ์ฉํ๊ธฐ - @CrossOrigin, <mvc:cors>, Filter (0) | 2022.03.11 |
[Web] Received fatal alert: handshake_failure ์๋ฌ (0) | 2022.03.08 |
[Web] Restful API๋? (1) | 2022.02.21 |
[Spring] Bean ๋ฑ๋ก ๋ฐฉ๋ฒ : @Bean vs @Component ์ฐจ์ด (0) | 2022.02.03 |
๋๊ธ