<토비의스프링> 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를 메타어노테이션으로 사용한다.
'개발서적 > 토비의스프링' 카테고리의 다른 글
<토비의스프링> 8.1~8.4 스프링이란 (0) | 2021.03.13 |
---|---|
<토비의스프링> 7.5~7.6.1 내장형 데이터베이스 (0) | 2021.02.20 |
<토비의스프링> 7.3~7.4 서비스 추상화 (0) | 2021.02.20 |
<토비의스프링> 7.1~7.2 SQL DAO 분리하기 (0) | 2021.02.20 |
<토비의스프링> 6.7~6.8 트랜잭션 어노테이션 (0) | 2021.02.20 |
블로그의 정보
57개월 BackEnd
BFine