You will be fine

<토비의스프링> 7.6.2~7.6.6 어노테이션

by BFine
반응형

이번장은 뭔가 어노테이션 사용방법 느낌이라 간단하게 정리해야겠다.

7.6.2 

 a. @Autowired

  -  자동와이어링 기법을 이용해 조건에 맞는 빈을 찾아 자동으로 setter나 필드에 넣어준다.

  -  컨터이너가 이름이나 타입 기준으로 주입될 빈을 찾아준다.

  -  두개이상의 빈이 있을 경우 타입 -> 이름 순으로 와이어링 된다.

 

 b. @Component

  -  클래스에 부여, 빈 스캐너를 통해 자동으로 빈등록

  -  스캔에 사용되는 어노테이션은 @ComponentScan 이고 basePackage를 기준으로 한다.

 

 c. 메타 어노테이션

  -  어노테이션의 정의에 부여된 어노테이션을 의미한다.

  -  빈 스캔을 통해 자동등록 대상으로 인식하게 할려면 @Component를 붙여주면 된다.

@Component
public @interface SnsConnector{
    ...
}

 

 

7.6.3 컨텍스트 분리 

 a. 분리방법

  -  DI 설정정보 분리하는 방법은 DI 설정클래스를 추가하고 관련 어노테이션,필드,메소드를 옮기면된다.

  -  그리고 DI 설정클래스에는 @Configuration을 붙여준다.

 

 b. @Import 

  -  자바클래스로 된 설정정보를 가져올때 사용한다.

     => @Import(SqlServiceContext.class)

 

7.6.4 

 a. 프로파일

  -  동일한 두개의 빈이 있으면 스프링이 정보읽는 순서에 따라서 먼저 읽는 빈설정에 우선적용된다.

  -  테스트환경과 운영환경이 다를경우에 @Profile@ActiveProfiles를 사용하면된다.

  -  @Profile은 구분할때 사용하며 @ActiveProfiles는 런타임에 사용할 Profile을 지정해준다.

 b. 빈정보 조회

  -  스프링 컨테이너는 모두 BeanFactory라는 인터페이스를 구현하고 있다.

  -  대부분은 DefaultListableBeanFactory 에서 관리된다.

@Autowired
DefaultListableBeanFactory bf;

public void beans(){
	for(String n : bf.getBeanDefinitionNames()){
    	System.out.println("bf.getBean(n).getClass().getName()");
    }
}

 

7.6.5 프로퍼티 소스 

 a. @PropertySource

  -  컨테이너가 프로퍼티 값을 가져오는 대상을 의미한다.

  -  @Value를 이용하여 ${프로퍼티 속성}으로 주입가능하다.

 

7.6.6 빈설정의 재사용

 a.  @Enable*

  -  @Import를 다른 이름의 어노테이션으로 대체가능하다.

@Import(value=SqlServiceContext.class)
public @interface EnableSqlService{
}

  -  @Import를 사용할때보다 좀더 명확하게 의미를 나타낼수있다.

  -  보통의 @Enable* 어노테이션을 이용하는 클래스는 @Import를 메타어노테이션으로 사용한다.

  

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기