spring @ Bean 주해 사용
@ 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(); } }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.