SPRING

SPRING 의존성 주입

Adev 2023. 2. 8. 00:01

1. 의존성 주입 설정

root-context에 component-scan 추가

 

XML 설정

root-context.xml -> Namespaces탭 -> context체크 -> root-context.xml에 코드 추가

<context:component-scan base-package="com.toy.sample"/>
</context:component-scan>

 

Java 설정

RootCconfig.java에 코드 추가

@Configuration
@ComponentScan(basePackages= {"com.toy.sample"})
public class RootConfig {

 

 

2. 의존성 주입 방법

: 생성자 주입과 setter 주입 방법 등이 있다.

 

1) 생성자 주입

: 생성자를 정의 후 주입한다.

 

ex) @Component + 생성자 생성

@Component
@Data //Lombok의 setter, 생성자, toString 등을 자동으로 생성한다 
public class Chef {
@Component
@ToString
@Getter
public class Hotel {
private Chef chef;

public Hotel(Chef chef) {
this.chef = chef;
}

}

 

 

2) 묵시적 생성자 주입 (spring 4.3 이후) 

:

 

ex) @Component + @AllArgsConstructor

@Component
@Data //Lombok의 setter, 생성자, toString 등을 자동으로 생성한다 
public class Chef {
@Component
@ToString
@Getter
@AllArgsConstructor //인스턴스 변수로 선언된 모든 것을 파라미터로 받는 생성자를 만든다.
public class Hotel {
private Chef chef;

}

 

ex) @Controller + @RequiredArgsConstructor

@Controller
public class MyWebSocketHandler extends TextWebSocketHandler {
@Configuration
@RequiredArgsConstructor
public class WebSocketConfig implements WebSocketConfigurer{

private final MyWebSocketHandler myWebSocketHandler;

 

 

3) setter주입 

: @Setter set메소드 작성 후 @Autowired 등 어노테이션 추가해 생성자를 주입한다.

 

ex)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { RootConfig.class })
@Log4j
public class HotelTests {

@Setter(onMethod_ = { @Autowired })
private Hotel hotel;

@Test
public void testExist() {

assertNotNull(hotel);

log.info(hotel);
log.info("-------");
log.info(hotel.getChef());
}
}

 

 

4) @Configuration + @Bean

 

ex)

@Configuration
public class WebSocketConfig implements WebSocketConfigurer{

@Bean
public MyWebSocketHandler chatHandler() {
return new MyWebSocketHandler();
}

//@RequiredArgsConstructor : @NonNull, final이 붙은 인스턴스 변수에 대한 생성자를 만든다.

 

 


참고

코드로 배우는 스프링 웹 프로젝트

'SPRING' 카테고리의 다른 글

SPRING 웹소켓 기본설정 (Java Configuration)  (0) 2023.02.18
SPRING mybatis <selectKey>  (0) 2023.02.13
SPRING 테스트 코드 작성  (0) 2023.02.07
SPRING 설정 (JAVA Configuration)  (0) 2023.02.06
SPRING 설정 (XML)  (0) 2023.02.04