주석이 포함되어 있습니다.
@Configuration
로 표시하십시오.
이 클래스는 Bean 정의의 원인이되고 Spring은 이러한 정의를 사용하여 응용 프로그램 컨텍스트를 설정합니다. @Configuration
@Bean
스프링은 cglib 기반 서브 클래스 (proxy)를 생성하여
메소드가 기본적으로 동일한 단일 -측정 인스턴스를 반환하는지 확인합니다. 이 동작을 완료 모드 라고합니다. 에이전트를 수행하지 않으면 여러 번 - 메소드를 호출하면 여러 인스턴스가 생성 될 수 있습니다.
-
구성 요소와 통합
(또는주석이있는 클래스)와 함께 사용될 때
주석 클래스는 명시 적으로 정의 될 수 있으며 스프링은 다른 콩을 자동으로 스캔하고 등록 할 수 있습니다. -
주입 를 허용합니다 클래스 지원 생성자 또는 필드 기반의 종속성 주입을 지원합니다.
@Bean
기본 예 @bean 메소드@Bean
: 명시 적으로 Bean을 정의하십시오. - 가 호출하더라도 에이전시 메커니즘으로 인해 한 번만 생성됩니다.
함수 (예 : DataConfig, ServiceConfig 및 WebConfig)에 따라 구성이 여러 클래스로 분리됩니다. 이는 가독성과 유지 보수를 향상시킵니다. @ComponentScan
2. 하드 코딩 값을 피하십시오외부 구성 소스 (예 : Application.Properties 또는 Application.yml)를 사용하고 또는 주입 값을 사용하십시오. @SpringBootApplication
@Configuration
3. @componentscan을 사용하여모든 콩을 보여주지 말고 레지스터 , 및 - 구성 요소를 사용하십시오.
4. 사용 조건 Bean > 또는 와 같은 주석을 사용하여 콩을 조건부로 정의하고 특정 환경이나 구성에서만 콩 만로드했습니다.
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } @Bean public MyController myController() { return new MyController(myService()); } }
5. 조직 응용 프로그램 속성를 사용하여 구성 속성을 그룹화하여 분산화 된 주석을 최소화하십시오.
에 주목 해야하는 문제 @ConfigurationProperties @Value
수동 인스턴스형 Bean@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
를 사용하지 마십시오. 클래스에서 Bean을 만들지 마십시오. Spring의 종속성 주입 및 수명주기 관리를 우회하기 때문입니다.
잘못된 글쓰기 :
-
사이클론 의존성 상호 종속 Bean을 정의 할 때 조심하십시오. 순환 의존성을 유발할 수 있습니다.
@Configuration
솔루션 :new
코드를 재구성하여 주입하거나 를 주입합니다.
@bean 메소드
주석은 다시로드하는 메소드를 피하십시오. 예상치 못한 결과를 유발할 수 있기 때문입니다. @Configuration public class AppConfig { @Value("${app.name}") private String appName; @Bean public AppService appService() { return new AppService(appName); } }
에이전트 제한- 의 대행사 메커니즘은 클래스가 최종적이지 않을 때 효과적이지 않습니다. 구성 클래스를 최종적으로 표시하지 마십시오. @Component를 조심스럽게 사용하십시오
및 를 혼합하지 마십시오. 처리 방법이 다르기 때문에 예상치 못한 행동으로 이어질 수 있습니다.
@Lazy
-
의 고급 예제 사용 의 의존 : 각 콩은 다른 콩에 따라 다르고 스프링은 종속성 관계를 자동으로 해결합니다. @Bean
는 Bean 에 의해 재사용 될 수 있고 Bean은 여러 서비스에서 재사용 할 수 있습니다. -
요약 목적 :
모범 사례 : 구성을 모듈화하고, 외부화 된 속성을 사용하고, Spring의 주석 (예 :@Configuration
는 농축 된 유형 보안 방법에서 Bean을 정의 할 수 있습니다. - 및 )을 사용하십시오.
피해야하는 트랩 : 수동으로 인스턴스화 된 Bean, 사이클 종속성, 무거운 하중 메소드 및
를 사용하여 강력하고 쉬운 -용이한 스프링 애플리케이션을 구축 할 수 있습니다.@Component
최종 사용.@Configuration
@Configuration
이러한 관행을 따르면 효과적으로
-
사이클론 의존성 상호 종속 Bean을 정의 할 때 조심하십시오. 순환 의존성을 유발할 수 있습니다.
위 내용은 Spring- : @-depth 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

Dreamweaver Mac版
시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
