< 객체 생성 및 의존 관계 설정 방법 = 객체 설정 정보 >
② Annotation 이용
* 일일이 의존 관계를 설정할 필요 없이 자동으로 프로퍼티나 생성자 파라미터 값으로 동일 타입의 빈 객체를 전달해 준다.
* 일일이 <ref> 태그를 사용하지 않아도 된다.
* 시간이 줄어든다.
* 설정 코드가 줄어든다.
* <context:annotation-config />
1. @Autowired
- 생성자, 필드, 메소드 세 곳에 적용 가능
- xml에서 프로퍼티 설정 코드가 없어도 class= 부분의 타입을 보고 동일 타입을 갖는 빈을 프로퍼티 값으로 사용함
- 만약 @Autowired 를 썼는데 그 객체가 빈 등록이 안되어있으면 익셉션이 난다.
이걸 그냥 null 값으로 두고 싶으면 @Autowired(required = false) 이렇게 해준다.
2. @Qualifier
- 보통 @Autowired 는 빈 하나를 대상으로 적용되는데 동일한 타입의 빈이 여러개이면 자동 주입이 어렵긴하다.
그런 경우 변수 이름을 id로 보고 동일한 객체를 찾아 주입한다.
- 혹은 @Qualifier("nang") 을 @Autowired 랑 같이 써줘서 id 처럼 사용한다.
- @Autowired
@Qualifier("nang")
3. component-scan ---> @Component
- 특정 패키지 또는 그 하위 패키지에서 클래스를 찾아 스프링 빈으로 등록해주는 기능
- @Component 가 붙은 클래스들을 검색
- <context:component-scan> 태그를 이용해서 스프링이 클래스를 검색할 패키지 지정
- 위 태그로 패키지를 지정하면 그 패키지 내의 @Component 가 붙은 클래스 파일들을 스캔해서 빈으로 등록하는 것!
- 속성 : base-package= 필수!
- <context:component-scan base-package="패키지명" />
- 클래스가 알아서 빈만 등록하는거기 때문에 의존 관계 설정은 @Autowired 같은 Annotation을 사용해야 함
- 스프링이 빈 등록할 때 보통 클래스의 첫 글자를 소문자로 바꿔서 빈 이름으로 등록함
ex) public class Product {} 이면 <bean id="product" /> 이런 식
- 그래서 자바에서 getBean 할 때 Product pd = context.getBean("product", Product.class); 이렇게 소문자로 바꾼 이름으로 걍 써서 빈 객체 가져오면 됨
- 만약에 자동으로 등록되는 빈 이름 말고 특정 이름을 사용하고 싶으면 @Component("nang") 이렇게 해주면 됨
---> 빈 객체 자동 생성 (id="nang")
③ 자바 클래스를 이용한 객체 설정
- ApplicationContext.java
- @Bean 어노테이션 사용하면 빈 등록
- 생성자를 이용한 의존 객체 주입
- AnnotationConfigApplicationContext
public class MainForSpringJavaConf { public static void main(String[] args) { AbstractApplicationContext context = new AnnotationConfigApplicationContext("ApplicationContext.java"); ... } }
'SPRING' 카테고리의 다른 글
Spring Container (0) | 2019.03.18 |
---|---|
AOP (Aspect-Oriented Programming) (0) | 2019.03.18 |
DI / 의존 관계 설정 방법 1 (XML 이용 방법) (0) | 2019.03.18 |
DI (Dependency Injection) / 의존 객체 생성 방법 (0) | 2019.03.18 |
Spring Web MVC framework (0) | 2019.03.16 |