@Autowired
-의존관계 자동 설정(type 기반)
-생성자, 필드, 메서드에 적용 가능
-setXXXX()의 형식이 아니어도 적용가능
AbstractController.java
package controller; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import service.AbstractService; public class AbstractController extends
@Autowired return null; } |
AbstractService.java
package service; public interface AbstractService { |
AbstractServiceImpl.java
package service; public class AbstractServiceImpl implements AbstractService { @Override } |
spring301-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" <context:annotation-config/>
<bean id="abstractService" class="service.AbstractServiceImpl"></bean> |
▶결과
START >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
아래와 같이 메서드에 적용도 가능(setXXX() 형태가 아니어도 적용가능!!!)
@Autowired |
/////////////////////////////////////////////////////////////////////////////////////////////
@Autowired(required=false)
-프로퍼티를 반드시 설정할 필요가 없는 경우 사용
-default : true
AbstractController.java
package controller; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import service.AbstractService; public class AbstractController extends
@Autowired(required=false) } |
spring301-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" <context:annotation-config/>
|
-required 속성의 값을 false로 지정할 경우, 해당 타입의 빈 객체가 존재하지 않더라도 예외가 발생하지 않음
(실제 로직 처리시 exception 발생)
-즉 위의 예제의 경우 <!-- bean id="abstractService" class="service.AbstractServiceImpl"></bean -->
처럼 주석 처리가 되어 있지만 @Autowired(required=false)이므로 웹서버가 설정파일 로드시 에러가 발생하지 않음.
required=true로 설정했다면 웹서버가 설정파일 로드시 에러발생
/////////////////////////////////////////////////////////////////////////////////////////////
@Qualifier
-동일한 타입의 빈 객체들 중 특정 빈을 사용하도록 설정
package controller; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import service.AbstractService; public class AbstractController extends
@Autowired }
========================================================================================== //아래처럼 사용해도 문제없음 private AbstractService service; |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" <context:annotation-config/>
|
'프로그램 > Spring 3.0' 카테고리의 다른 글
@Configuration, @Bean - 2(@ImportResource) (0) | 2012.04.26 |
---|---|
@Configuration, @Bean - 1 (0) | 2012.04.25 |
@Component, <context:component-scan base-package=""/> (0) | 2012.04.25 |
@PostConstruct, @PreDestroy (0) | 2012.04.25 |
@Resource (0) | 2012.04.24 |