Spring- : @-depth 구성
주석이 포함되어 있습니다.
@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 > 또는 와 같은 주석을 사용하여 콩을 조건부로 정의하고 특정 환경이나 구성에서만 콩 만로드했습니다.
<织 织> 5. <织> 조직 응용 프로그램 속성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()); } }
로그인 후 복사<配> <🎜 🎜>를 사용하여 구성 속성을 그룹화하여 분산화 된 <🎜 🎜> 주석을 최소화하십시오.
에 주목 해야하는 문제 <🎜 @ConfigurationProperties
@Value
<免> <<> 수동 인스턴스형 Bean를 사용하지 마십시오. <🎜 🎜> 클래스에서 Bean을 만들지 마십시오. Spring의 종속성 주입 및 수명주기 관리를 우회하기 때문입니다.@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
로그인 후 복사
<误> <<> 잘못된 글쓰기 : <🎜 🎜>
-
<循 循> <<> 사이클론 의존성 상호 종속 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 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

많은 응용 프로그램 시나리오에서 정렬을 구현하기 위해 이름으로 이름을 변환하는 솔루션, 사용자는 그룹으로, 특히 하나로 분류해야 할 수도 있습니다.

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

데이터베이스 작업에 MyBatis-Plus 또는 기타 ORM 프레임 워크를 사용하는 경우 엔티티 클래스의 속성 이름을 기반으로 쿼리 조건을 구성해야합니다. 매번 수동으로 ...

Java 객체 및 배열의 변환 : 캐스트 유형 변환의 위험과 올바른 방법에 대한 심층적 인 논의 많은 Java 초보자가 객체를 배열로 변환 할 것입니다 ...

전자 상거래 플랫폼에서 SKU 및 SPU 테이블의 디자인에 대한 자세한 설명이 기사는 전자 상거래 플랫폼에서 SKU 및 SPU의 데이터베이스 설계 문제, 특히 사용자 정의 판매를 처리하는 방법에 대해 논의 할 것입니다 ...

Redis 캐싱 솔루션은 제품 순위 목록의 요구 사항을 어떻게 인식합니까? 개발 과정에서 우리는 종종 a ... 표시와 같은 순위의 요구 사항을 처리해야합니다.
