wannaqueen
  • Initial page
  • Spring boot
    • 스프링부트의 소개
      • 8. 스프링 부트 소개 by ks
      • 9. 시스템 요구사항 by ks
      • 10. 스프링 부트 설치 by ks
      • 11. 첫 번째 Spring Boot 애플리케이션 개발하기 by ys
        • 11.1 POM 만들기
        • 11.2 클래스 패스 의존성 추가하기
        • 11.3 코드 작성하기
        • 11.4 예제 실행하기
        • 11.5 실행 가능한 jar 만들기
      • 12. 다음에 읽을 내용 by ys
      • 13. 빌드 시스템 by sh
        • 13.1 의존성 관리
        • 13.2 Maven
        • 13.3 Gradle
        • 13.4 Ant
        • 13.5 Starters
    • 스프링부트의 기능
      • 23. Spring Application by ys
        • 23.1 startup 실패
        • 23.2 배너를 내가 원하는 대로 바꾸기
        • 23.3 SpringApplication 커스터마이징하기
        • 23.4 Fluent Builder API
        • 23.5 어플리케이션 이벤트와 리스너들
        • 23.6 웹 환경
        • 23.7 Application 인자에 접근하기
        • 23.8 ApplicationRunner 또는 CommandLineRunner 사용
        • 23.9 어플리케이션 종료
        • 23.10 관리자 기능
      • 24. 외부화된 구성 by ys
        • 24.1 임의의 값 구성
        • 24.2 명령행 특성 액세스
        • 24.3 응용 프로그램 속성 파일
        • 24.4 프로파일 관련 프라퍼티들
        • 24.5 프라퍼티들에서 플레이스홀더들
        • 24.6 속성의 암호화
        • 24.7 속성대신 yaml 사용하기 - 다시
        • 24.8 Type-safe Configuration Properties
      • 25. 프로파일 by ks
        • 25.1 Active 프로파일 더하기
        • 25.2 프로그램적으로 프로파일 세팅
        • 25.3 프로파일 별 구성파일
      • 26. 로깅 by ks
        • 26.1 로그 형식
        • 26.2 콘솔 출력
        • 26.3 파일 출력
        • 26.4 로거 레벨
        • 26.5 로그 그룹
        • 26.6 사용자 정의 로그 설정
        • 26.7 로그백 확장
      • 27 국제화 by ks
      • 28. SQL 데이터베이스 작업 by sh
      • 29. NoSQL 기술 사용 by sh
      • 30. 메시징 by sh
      • 31. 이메일 전송 by sh
      • 28. JSON by sh (다시 시작!)
        • 28.1 Jackson
        • 28.2 Gson
        • 28.3 JSON-B
      • 29. 웹 응용 프로그램 개발 by sh
        • 29.1 The “Spring Web MVC Framework”
        • 29.2 The “Spring WebFlux Framework”
        • 29.3 JAX-RS and Jersey
        • 29.4 내장된 서블릿 컨테이너 지원
        • 29.5 내장된 반응형 서버 지원
        • 29.6 반응형 서버 리소스 구성
      • 30. Security by ys
        • 30.1 MVC 보안
        • 30.2 WebFlux 보안
        • 30.3 OAuth2
        • 30.4 Actuator 보안
      • 31. SQL 데이터베이스 작업 by ys
        • 31.1 Configure a DataSource
        • 31.2 JdbcTemplate 사용
        • 31.3 JPA와 스프링 데이터 JPA
        • 31.4 스프링 데이터 JDBC
        • 31.5 H2의 웹 콘솔 사용
        • 31.6 jOOQ 사용하기
      • 32. NoSQL 기술로 작업하기 by ks
      • 33 Caching by ks
      • 34. 메시징
        • 34.1 JMS by sh
        • 34.2 AMQP by sh
        • 34.3 Apache Kafka Support by ys
      • 35.REST 서비스 호출 RestTemplate
        • 35.1 RestTemplate 사용자 정의
      • 36. REST 서비스 호출 WebClient by ys
      • 37. 유효성 확인 by ys
      • 38. 이메일 보내기 by ys
      • 39. JTA를 이용한 분산 트랜잭션 by ys
      • 40.하젤캐스트(Hazelcast) by ys
      • 41. Quartz Scheduler by ys
      • 42. 작업 실행 및 스케줄링 by ys
      • 43. 스프링 통합 by ys
      • 44. Spring 세션 by ys
      • 45. JMX를 통한 모니터링 및 관리 by ys
      • 46. Testing by sh
        • 46.3 Testing Spring Boot Applications
          • 46.1~46.3.10
          • 46.3.11 자동 구성된 Spring WebFlux 테스트
          • 46.3.12 자동 구성된 Data JPA 테스트들
          • 46.3.13 자동 구성된 JDBC 테스트들
          • 46.3.14 자동 구성된 Data JDBC 테스트들
          • 46.3.15 자동 구성된 JOOQ 테스트들
          • 46.3.16 자동 구성된 Data MongoDB 테스트들
          • 46.3.17 자동 구성된 Data Neo4j 테스트
          • 46.3.18 자동 구성된 Data Redis 테스트들
          • 46.3.19 자동 구성된 Data LDAP 테스트들
          • 46.3.20 자동 구성된 REST 클라이언트
          • 46.3.21자동 구성된 Spring REST Docs 테스트
          • 46.3.22 추가적인 자동 구성 및 슬라이스
          • 46.3.23 사용자 구성 및 분할
          • 46.3.24 Spock을 사용하여 스프링 부팅 응용 프로그램 테스트
      • 47. 웹 소켓 by sh
      • 48. 웹 서비스 by sh
        • 48.1WebServiceTemplate로 웹 서비스 호출하기
      • 49. 자신만의 자동 구성 생성
        • 49.1 자동 구성된 빈 이해하기 by sh
        • 49.2 자동 구성 후보 찾기 by sh
        • 49.3 Condition 어노테이션들 by sh
        • 49.4 자동구성 테스팅 by ks
        • 49.5 자신만의 스타터 생성하기 by ks
      • 50. Kotlin support by ys
      • 51. What to Read Next by ys
      • 52. Production-ready 기능 활성화 by ys
      • 53. Endpoints
        • 53.1 엔드 포인트 활성화 by ys
        • 53.2 엔드 포인트 노출 by ys
        • 53.3 HTTP endpoints 보안 by ys
        • 53.4 Endpoints 구성
        • 53.5 액츄에이터 웹 엔드 포인트 용 하이퍼 미디어 by ys
        • 53.6 CORS 지원 by ys
        • 53.7 커스텀 엔드포인트 확장 by ks
        • 53.8 Health 정보 by ks
        • 53.9 어플리케이션 정보 by sh
      • 54. HTTP를 통한 모니터링 및 관리 by sh
        • 54.1 관리 엔드 포인트 경로 사용자 정의
        • 54.2 관리 서버 포트 사용자 정의
        • 54.3 관리 관련 SSL 구성
        • 54.4 관리 서버 주소 사용자 정의
        • 54.5 HTTP 끝점 사용안하기
  • spring 5.0
    • 1. IoC 컨테이너
      • 1.1 스프링 IoC 컨테이너와 빈의 도입 by sh
      • 1.2 컨테이너 by ys
      • 1.3 빈 개요 by ks
      • 1.4 의존성 by ks, ys, sh
        • 1.4.1 의존성 주입 by ks
        • 1.4.2 의존성과 configuration by ks
        • 1.4.3 depends-on 사용 by ys
        • 1.4.4 게으른-초기화된 bean by ys
        • 1.4.5 Autowiring Collaborators by ys
        • 1.4.6 메소드 주입 by sh
      • 1.5. 빈의 범위 by sh
      • 1.6 빈의 특성 커스터마이징하기 by ys
        • 1.6.1 라이프 사이클 콜백
        • 1.6.2 ApplicationContextAware과BeanNameAware
        • 1.6.3 기타 Aware인터페이스
      • 1.7 빈 정의 상속by ys
        • 1.7.1 빈 정의 상속
      • 1.8 컨테이너 확장 포인트 by ks
      • 1.9 어노테이션 기반의 컨테이너 구성 by sh
      • 1.10 클래스패스 스캔 및 관리 by ys
        • 1.10.1 @Component 및 추가 스테레오 타입 어노테이션
        • 1.10.2 meta-annotation 및 composed annotation 사용
        • 1.10.3 자동으로 클래스 검색 및 Bean 정의 등록
        • 1.10.4 스캐닝을 커스터마이징 하기위해 필터를 사용
        • 1.10.5 component 내에 Bean 메타 데이터 정의
        • 1.10.6 이름으로 자동탐지되는 컴포넌트
        • 1.10.7 범위로 자동 감지되는 컴포넌트
        • 1.10.8 annotation과 함께 한정된 메타데이터 제공
        • 1.10.9 후보 component의 index 생성
      • 1.11 JSR 330 표준 어노테이션 사용하기 by sh
      • 1.12 자바 기반의 컨테이너 구성 by sh, ks
        • 1.12.1 기본 개념: @Bean 및 @Configuration by sh
        • 1.12.2 AnnotationConfigApplicationContext를 사용한 스프링 컨테이너 인스턴스화 by sh
        • 1.12.3 @Bean 사용 by ks
        • 1.12.4 @Configuration 어노테이션 by ks
        • 1.12.5 자바 기반 Configuration구성 by ks
      • 1.13 환경 추상화 by ys
        • 1.13.1 빈 정의 프로파일
        • 1.13.2 PropertySource추출
        • 1.13.3 @PropertySource 사용
        • 1.13.4 Placeholder Resolution in Statements
      • 1.14 LoadTimeWeaver 등록 by ks
      • 1.15 ApplicationContext의 부가 수용가능성들 by ks, sh
        • 1.15.1 MesageSource를 사용한 국제화 by ks
        • 1.15.2 표준과 커스텀 이벤트 by ks
        • 1.15.3 로우 레벨 리소스에 대한 편리한 접근 by sh
        • 1.15.4 웹 어플리케이션에 대한 간편한 Application 인스턴스화 by sh
        • 1.15.5 스프링 ApplicationContext를 Java EE RAR 파일로 배포하가ㅣ by sh
        • 1.15.3 Low-level 리소스로 편리한 접근
        • 1.15.4 웹 어플리케이션을 위한 편리한 ApplicationContext 인스턴스화
      • 1.16 BeanFactory by sh
    • 2. Resource by ks
      • 2.1 소개
      • 2.2 Resource interface
      • 2.3 내장 리소스 확장
      • 2.4 ResourceReader
      • 2.5 ResourceLoaderAware 인터페이스
      • 2.6 Resources 의존성
      • 2.7 어플리케이션 컨텍스트와 리소스 경로
    • 3. 유효성 검사, 데이터 바인딩 및 유형 변환 by ys, sh
      • 3.1. Spring의 Validator 인터페이스를 사용하여 유효성 검사 by ys
      • 3.2. 오류 메시지로 코드 해결 by ys
      • 3.3. bean 조작과 BeanWrapper by ys
        • 3.3.1. 기본 및 중첩 된 프로퍼티를 설정 및 가져 오기
        • 3.3.2. 내장 된 PropertyEditor구현
      • 3.4 스프링 타입 변환 by sh
        • 3.4.1 Converter SPI
        • 3.4.2 ConverterFactory 사용하기
        • 3.4.3 GenericConverter 사용하기
        • 3.4.4 ConversionService API
        • 3.4.5 ConversionService 구성
        • 3.4.6 프로그래밍 방식으로 ConversionService 사용하기
      • 3.5 스프링 필드 포맷팅 by sh
        • 3.5.1 Formatter SPI
        • 3.5.2 Annotation 기반의 포맷팅
        • 3.5.3 FormatterRegistry SPI
        • 3.5.4 FormatterRegistrar SPI
        • 3.5.5 스프링 MVC에서 포맷팅 구성하기
      • 3.6 전역 Date and Time 포맷 구성 by sh
      • 3.7 스프링 유효성 검사 by sh
        • 3.7.1 by sh
        • 3.7.2 by sh
        • 3.7.3 by sh
    • 4 스프링 표현식 언어 (SpEL)
      • 4.1 평가 by sh
      • 4.2 빈 정의에 있는 표현식 by sh
      • 4.3 Language Reference
        • 4.3.1 리터럴 표현식 by ys
        • 4.3.2 프로퍼티,배열,목록,지도 및 인덱서 by ys
        • 4.3.3 인라인 목록 by ys
        • 4.3.4 인라인 Maps by ys
        • 4.3.5 배열 구성 by ys
        • 4.3.6 행동 양식 by ys
        • 4.3.7 연산자 by ys
        • 4.3.8 유형 by ys
        • 4.3.9 생성자 by ys
        • 4.3.10 변수 by ks
        • 4.3.11 함수 by ks
        • 4.3.12 빈 참조 by ks
        • 4.3.13 삼항 연산자 (If-Then-Else) by ks
        • 4.3.14 엘비스 연산자 by ks
        • 4.3.15 안전한 네비게이션 연산자 by ks
        • 4.3.16 컬렉션 셀렉션 by ks
        • 4.3.17 컬렉션 프로젝션 by ks
        • 4.3.18 표현 템플릿 by ks
    • 5 spring을 이용한 aspect 지향 프로그래밍
      • 5.1 AOP 개념 by ys
      • 5.2 Spring AOP 기능 및 목표 by ys
      • 5.3 AOP 프록시 by ys
      • 5.4 @AspectJ 지원 by ys,ks
        • 5.4.1 @AspectJ 지원 활성화 by ys
        • 5.4.2 Aspect 선언하기 by ys
        • 5.4.3 Pointcut 선언하기 by ys
        • 5.4.4 Advice 선언 by ks
        • 5.4.5 소개 by ks
        • 5.4.6 Aspect 초기화 모델 by ks
        • 5.4.7 AOP 예제 by ks
      • 5.5 스키마 기반 AOP 지원 by sh
        • 5.5.1 Aspect 선언 by sh
        • 5.5.2 Pointcut 선언 by sh
        • 5.5.3 Advice 선언 by sh
        • 5.5.4 인트로덕션 by sh
        • 5.5.5 Aspect 인스턴스화 모델 by sh
        • 5.5.6 Advisors by sh
        • 5.5.7 AOP 스키마 예제 by sh
    • 6 Spring AOP API
      • 6.1 Spring의 Pointcut API
        • 6.1.1 개념들 by ys
        • 6.1.2 Pointcuts에 대한 작업 by ys
        • 6.1.3 AspectJ Expression Pointcuts by ys
        • 6.1.4 편리한 Pointcut 구현 by ys
        • 6.1.5 포인트 컷 수퍼 클래스 by ys
        • 6.1.6. 사용자 정의 Pointcut by ys
      • 6.2 Spring의 Advice API
        • 6.2.1. 조언 라이프 사이클 by ys
        • 6.2.2 Spring의 advice 유형 by ys
      • 6.3 Spring의 Advisor API by ks
      • 6.4 ProxyFactoryBean을 사용해서 AOP 프록시 생성 by ks
        • 6.4.1 기본
        • 6.4.2 자바빈 프로퍼티
        • 6.4.3 JDK 및 CGLIB 기반 프록시
        • 6.4.4 프록시 인터페이스
        • 6.4 5 프록시 클래스
        • 6.4.6 "Global" advisor 사용
      • 6.5 간결한 프록시 정의 by sh
      • 6.6 ProxyFactory를 사용하여 프로그래밍 방식으로 AOP 프록시 만들기 by sh
      • 6.7 Advised 객체들 조작하기 by sh
      • 6.8 "자동 프록시" 기능 사용 by sh
      • 6.9 TargetSource구현체 사용하기 by sh
      • 6.10 새로운 Advice 타입 정의하기 by sh
    • 7. 데이터 버퍼와 코덱 by ks
Powered by GitBook
On this page

Was this helpful?

  1. spring 5.0
  2. 1. IoC 컨테이너
  3. 1.4 의존성 by ks, ys, sh

1.4.5 Autowiring Collaborators by ys

Previous1.4.4 게으른-초기화된 bean by ysNext1.4.6 메소드 주입 by sh

Last updated 6 years ago

Was this helpful?

auto wiring : spring 빈 설정을 최소한으로 할 수 있도록 하는 기능. 특정 빈을 지정하는 방식이 아닌, spring 프레임워크가 해당 방식에 맞는 spring빈을 자동으로 연결.

wiring : 의존성 주입을 통해 spring bean을 연결하는 것.

Spring 컨테이너는 협력 빈들 사이의 관계를 자동 연결 (autowire) 할 수있습니다. Spring이 ApplicationContext의 내용을 검사함으로써 빈에 대한 협력 bean들을 자동으로 처리하도록 할 수있습다. Autowiring에는 다음과 같은 장점이 있습니다.

  • Autowiring은 프로퍼티나 생성자의 아규먼트를 지정할 필요성을 크게 줄여줍니다. ( 이점에 대해 된 bean 템플릿과 같은 다른 메커니즘도 역시 중요합니다.)

  • Autowiring은 객체의 발전처럼 설정을 업데이트 할 수 있습니다. 예를 들어 클래스에 의존성을 추가해야하는 경우 설정을 수정할 필요없이 해당 의존성을 자동으로 충족시킬 수 있습니다. 따라서 autowiring은 개발 중에 특히 유용합니다. 코드베이스가 보다 안정적인 상황해서 명시 적 연결하기위해 옵션을 변경 할 필요가 없습니다.

setter Injection 사용 시

Autowire 사용시

표 2. 자동 배선 모드

방법

설명

no

(기본값) autowiring 없음. 빈 참조는 ref요소 로 정의해야합니다 . 협력 bean들을 를 명시 적으로 지정하면 제어력과 명확성이 높아지기 때문에 대규모 배포에서는 기본 설정을 변경하지 않는 것이 좋습니다. 어느 정도까지는 시스템의 구조를 문서화합니다.

byName

속성 이름에 의한 자동 연결. Spring은 autowired 할 필요가있는 프로퍼티와 같은 이름의 bean을 찾는다. 예를 들어 bean 정의가 이름으로 autowire로 설정되고 master 프로퍼티가 포함되어 있으면 (즉, setMaster(..)메소드 가있는 경우 ) Spring은 master 로 명명 된 bean 정의를 찾고 프로퍼티를 설정하는 데 사용합니다.

byType

컨테이너 내에서 프로퍼티 타입과 정확히 일치하는 하나의 빈이있다면 프로퍼티를 자동연결합니다. 하나보다 많은 빈 존재하면 해당 빈에대해서는 byType 자동 연결을 사용하지 말아야 한다는 것을 말해주는 fatal 예외가 던져집니다. 일치하는 빈이 하나도 없다면 아무일도 일어나지 않습니다. ( 프로퍼티도 정의 되지 않습니다.)

Constructor

byType과 유사하지만 생성자 아규먼트에 적용됩니다. 컨테이너에 생성자 아규먼트 타입과 정확히 일치하는 빈이 하나도 없으면 fatal 오류가 발생합니다.

byType또는 constructor를 autowiring 모드와 를 사용해서 당신은 배열 및 타입이 있는 컬렉션을 연결할 수 있습니다. 이 경우 컨테이너 내에 타입이 일치할 것으로 기대되는 모든 autowire 후보가 의존성을 충족시키기 위해 제공됩니다. 예상되는 키 유형이 String이면 강력한 유형의 Map 과 자동연결할 수 있습니다. 자동연결된 Map 의 인스턴스의 값들은 예상되는 유형과 일치하는 모든 bean 인스턴스로 구성될 것이고 Map인스턴스의 키에는 해당 bean 들의 이름이 포함됩니다.

자동 연결의 한계와 단점

자동 연결은 프로젝트 전체에서 일관되게 사용될 때 가장 최상으로 작동합니다. autowiring이 일반적으로 사용되지 않는다면 한 두개의 빈 정의만을 연결하려고 자동연결을 사용하는 개발자에게 혼동을 줄 것입니다.

autowiring의 한계와 단점을 고려하십시오.

  • property및 constructor-arg설정의 명시적인 의존성은 항상 autowiring보다 우선합니다. 프리미티브타입, Strings, Classes 같은 간단한 프로퍼티들 (이러한 간단한 프로퍼티의 배열포함)은 autowire 수 없습니다 . 이 제한은 디자인에 의한 것입니다.

  • 자동 연결은 명시 적 연결보다 정확하지 않습니다. 이전 표에서 언급했듯이, Spring은 예기치 않은 결과를 초래할 수도있는 애매한 경우에 추측을 피하기 위해 주의를 기울였지만 Spring 관리하는 객체 간의 관계는 더 이상 명백하게문서화되지 않습니다.

  • Spring 컨테이너에서 문서를 생성하는 것 같은 도구에서는 연결 정보를 사용할 수 없습니다.

  • 컨테이너 내의 여러 bean 정의는 autowired 될 setter 메소드 또는 생성자 아규먼트로 지정된 유형과 일치 할 수 있습니다. 배열, 컬렉션 또는 Map인스턴스의 경우 반드시 문제는 아닙니다. 그러나 단일 값을 예상하는 의존성의 경우 이 모호성은 임의로 해결되지 않습니다. 유일한 Bean 정의가 없으면 예외가 발생합니다.

후자의 시나리오에는 몇 가지 옵션이 있습니다.

  • 명백한 연결을 위해 자동 연결을 포기합니다.

  • <bean/>요소의 primary속성을 true로 설정하여 단일 bean 정의를 기본 후보로 지정하십시오 .

자동 연결에서 Bean 제외

이 autowire-candidate속성은 오직 타입 기반 자동 연결에만 영향을 주도록 설계되었습니다. 지정된 bean이 autowire 후보로 표시되지 않아도 해결되는 이름 별 명시 적 참조에는 영향을주지 않습니다. 결과적으로, 이름에 따른 autowiring은 이름이 일치한다면 bean을 주입합니다.

또한 bean 이름에 대한 패턴 일치를 기반으로 autowire 후보를 제한 할 수 있습니다. 최상위 레벨 <beans/>요소는 default-autowire-candidates속성으 하나 이상의 패턴을 갖습니다. 예를 들어, Repository로 끝나는 이름을 가진 빈을 자동연결 후보에서 제외하려면 *Repository값을 제공하십시오 . 여러 패턴을 제공하려면 쉼표로 구분 된 목록으로 정의하십시오. 빈 정의의에 대한 autowire-candidate속성은 true또는 false명시적으로 지정하면 항상 우선시 됩니다. 이러한 bean의 경우 패턴 일치 규칙이 적용되지 않습니다.

이 기술들은 autowiring로 다른 bean에 삽입하고 싶지 않은 bean에 유용합니다. 이는 제외된 빈이 스스로 autowiring을 사용하여 설정할 수 없다는 것을 의미하지는 않습니다. 더 적절히 말하면 bean 자신은 다른 bean을 autowiring하기위한 후보가 아닙니다.

참고해보자!

XML 기반의 설정 메타 데이터 ( 참조 )를 사용할 때, <bean/> 의 요소 autowire 속성을 사용하여 Bean 정의에 대한 autowire 모드를 지정할 수있다 . autowiring 기능에는 네 가지 모드가 있습니다. 빈마다 autowiring을 지정하고 따라서 autowire를 선택할 수 있습니다. 다음 표에서는 네 가지 autowiring 모드에 대해 설명합니다.

에서 설명할 autowire-candidate 속성에 false를 를 설정해서 빈 정의의 자동연결을 피합니다.

설명 된 것처럼 annotation 기반 설정으로 보다 세부적인 컨트롤을 구현하십시오 .

per-bean원리에 따라 자동 연결에서 Bean을 제외 할 수 있습니다. Spring의 XML 포맷에서, <bean/> 요소 autowire-candidate설정을 false로 설정한다 . 컨테이너는 autowiring 기반 구조 (예 :와 같은 어노테이션 스타일 설정 포함)에서 특정 bean 정의를 사용할 수 없도록 만듭니다 .

:

Dependency Injection
다음 섹션
Annotation 기반 컨테이너 구성에
@Autowired
http://wonwoo.ml/index.php/post/752
이 장의 다른 곳에서 논의