spring @ Bean 주해 사용

돌리다http://www.cnblogs.com/feiyu127/p/7700090.html
@ Bean 의 용법
@ Bean 은 방법 단계 의 주해 로 @ Configuration 주해 의 클래스 에 사용 되 며 @ Component 주해 의 클래스 에 도 사용 할 수 있 습 니 다.비 안의 id 를 추가 하 는 방법 이름
정의 bean
다음은 @ Configuration 의 예 입 니 다.
@Configuration
public class AppConfig { @Bean public TransferService transferService() { return new TransferServiceImpl(); } }

이 설정 은 이전 xml 에서 의 설정 과 같 습 니 다.
<beans>
    <bean id="transferService" class="com.acme.TransferServiceImpl"/> beans>

bean 의 의존
@ bean 도 다른 임의의 수량의 bean 에 의존 할 수 있 습 니 다. TransferService 가 AccountRepository 에 의존 하면 저 희 는 방법 적 인 파 라 메 터 를 통 해 이 의존 을 실현 할 수 있 습 니 다.
@Configuration
public class AppConfig { @Bean public TransferService transferService(AccountRepository accountRepository) { return new TransferServiceImpl(accountRepository); } }

생명주기 의 반전 을 받다
@ Bean 이 정의 하 는 bean 을 사용 하 더 라 도 생명주기 의 리 셋 함 수 를 실행 할 수 있 습 니 다. @ PostConstruct and @ PreDestroy 와 같은 방법 입 니 다.용법 은 아래 와 같다.
public class Foo {
    public void init() { // initialization logic } } public class Bar { public void cleanup() { // destruction logic } } @Configuration public class AppConfig { @Bean(initMethod = "init") public Foo foo() { return new Foo(); } @Bean(destroyMethod = "cleanup") public Bar bar() { return new Bar(); } }

기본적으로 javaConfig 설정 을 사용 하 는 bean 입 니 다. close 나 shutdown 방법 이 있 으 면 bean 이 소각 할 때 자동 으로 실 행 됩 니 다. 이 방법 을 실행 하고 싶 지 않 으 면 @ Bean (destroy Method = ") 을 추가 하여 소각 방법 을 방지 합 니 다.
bean 의 scope 지정
@ Scope 주석 사용 하기
@ Scope 주 해 를 사용 하여 @ Bean 정 의 를 사용 하 는 bean 을 지정 할 수 있 습 니 다.
@Configuration
public class MyConfiguration { @Bean @Scope("prototype") public Encryptor encryptor() { // ... } }

@Scope and scoped-proxy
spring 은 scope 의 프 록 시 를 제공 합 니 다. @ Scope 의 속성 proxyMode 를 설정 하여 지정 할 수 있 습 니 다. 기본 값 은 ScopedProxyMode. NO 입 니 다. 기본 값 은 ScopedProxyMode. INTERFACES 또는 기본 값 은 ScopedProxyMode. TARGET 로 지정 할 수 있 습 니 다.CLASS。 다음은 demo 입 니 다. 사용 한 것 같 습 니 다.
// an HTTP Session-scoped bean exposed as a proxy
@Bean
@SessionScope
public UserPreferences userPreferences() { return new UserPreferences(); } @Bean public Service userService() { UserService service = new SimpleUserService(); // a reference to the proxied userPreferences bean service.setUserPreferences(userPreferences()); return service; }

사용자 정의 bean 이름
기본적으로 bean 의 이름과 방법 이름 이 같 습 니 다. name 속성 으로 지정 할 수 있 습 니 다.
@Configuration
public class AppConfig { @Bean(name = "myFoo") public Foo foo() { return new Foo(); } }

비 안의 별명
bean 의 이름 지원 별명, 사용 방법 은 다음 과 같 습 니 다.
@Configuration
public class AppConfig { @Bean(name = { "dataSource", "subsystemA-dataSource", "subsystemB-dataSource" }) public DataSource dataSource() { // instantiate, configure and return DataSource bean... } }

bean 의 설명
때로는 bean 의 상세 한 정 보 를 제공 하 는 것 도 유용 합 니 다. bean 의 설명 은 @ Description 을 사용 하여 제공 할 수 있 습 니 다.
@Configuration
public class AppConfig { @Bean @Description("Provides a basic example of a bean") public Foo foo() { return new Foo(); } }

좋은 웹페이지 즐겨찾기