아래는 스프링이 BeanDefinition 오브젝트를 만들 때 사용하는 메타정보이다.
필수여부와 default 값이 명시되어 있다.

  • beanClassName : 빈 오브젝트의 클래스 이름. 빈 오브젝트는 이 클래스의 인스턴스가 된다.
    • default : 없음. 필수항목
  • id/name : 빈의 식별자
    • default : 없음
  • parentName : 빈 메타정보를 상속받을 부모 BeanDefinition의 이름. 빈의 메타정보는 계층구조로 상속할 수 있다.
    • default : 없음.
  • factoryBeanName : 팩토리 역할을 하는 빈을 이용해 빈 오브젝트를 생성하는 경우에 팩토리 빈의 이름을 지정한다.
    • default : 없음.
  • factoryMethodName : 다른 빈 또는 클래스의 메소드를 통해 빈 오브젝트를 생성하는 경우 그 메소드 이름을 지정한다.
    • default : 없음.
  • scope : 빈 오브젝트의 생명주기를 결정하는 스코프를 지정한다. 크게 싱글톤과 비싱글톤 스코프로 구분할 수 있다.
    • default : 싱글톤.
  • lazyInit : 빈 오브젝트의 생성을 최대한 지연할 것인지를 지정한다. 이 값이 true이면 컨테이너는 빈 오브젝트의 생성을 꼭 필요한 시점까지 미룬다.
    • default : false
  • dependsOn : 먼저 만들어져야 하는 빈을 지정할 수 있다. 빈 오브젝트의 생성 순서가 보장돼야 하는 경우 이용한다. 하나 이상의 빈 이름을 지정할 수 있다.
    • default : 없음.
  • autowireCandidate : 명시적인 설정이 없어도 미리 정해진 규칙을 가지고 자동으로 DI 후보를 결정하는 자동와이어링의 대상으로 포함시킬지의 여부
    • default : true
  • primary : 자동와이어링 작업 중에 DI 대상 후보가 여러 개가 발생하는 경우가 있다. 이때 최종 선택의 우선권을 부여할지 여부. primary가 지정된 빈이 없이 여러 개의 후보가 존재하면 자동와이어링 예외가 발생한다.
    • default : false
  • abstract : 메타정보 상속에만 사용할 추상 빈으로 만들지의 여부. 추상 빈이 되면 그 자체는 오브젝트가 생성되지 않고 다른 빈의 부모 빈으로만 사용된다.
    • default : false
  • autowireMode : 오토와이어링 전략. 이름,타입,생성자,자동인식 등의 방법이 있다.
    • default : 없음.
  • dependencyCheck : 프로퍼티 값 또는 레퍼런스가 모두 설정되어 있는지 검증하는 작업의 종류
    • default : 체크하지 않음.
  • initMethod : 빈이 생성되고 DI를 마친 뒤에 실행할 초기화 메소드의 이름
    • default : 없음.
  • destroyMethod : 빈의 생명주기가 다 돼서 제거하기 전에 호출할 메소드의 이름
    • default : 없음.
  • propertyValues : 프로퍼티의 이름과 설정 값 또는 레퍼런스. 수정자 메소드를 통한 DI작업에서 사용한다.
    • default : 없음.
  • constructorArgumentValues : 생성자의 이름과 설정 값 또는 레퍼런스. 생성자를 통한 DI작업에서 사용한다.
    • default : 없음.
  • annotationMetadata : 빈 클래스에 담긴 애노테이션과 그 애트리뷰트 값. 애노테이션을 이용하는 설정에서 활용한다.
    • default : 없음.

필수로 들어가는 클래스명 외에는 모두 생략가능하며, 위에 선언된 default 값이 사용된다.
위의 속성 중 beanClassName과 id/name만 있으면 간단하게 빈 하나를 생성 가능하다.


댓글을 달아 주세요