spring 지식 요약

7087 단어 springbeanxmlmysqlIOC
bean 속성 및 구조자 매개 변수: 직접량(기본 유형, Strings 유형 등)
요소는 문자열을 통해 속성이나 구조기 파라미터의 값을 지정합니다.앞에서 언급한 바와 같이 JavaBean Property Editor는 문자열을 java에서 시작하는 데 사용할 것입니다.lang.String 유형이 실제 속성 또는 매개변수 유형으로 바뀝니다.
<bean id="myDataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
  <!-- results in a setDriverClassName(String) call -->
  <property name="driverClassName">
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property name="url">
    <value>jdbc:mysql://localhost:3306/mydb</value>
  </property>
  <property name="username">
    <value>root</value>
  </property>
</bean>

idref 요소는 용기 내의 다른 bean의 id를 또는 요소에 전달하고 오류 검증 기능을 제공합니다.
<bean id="theTargetBean" class="..."/>
 <bean id="theClientBean" class="...">
    <property name="targetName">
        <idref bean="theTargetBean" />
    </property>
</bean>

상기 bean 정의 세션은 (실행할 때) 아래의 세션과 완전히 같습니다.
<bean id="theTargetBean" class="..."/>
<bean id="client" class="...">
    <property name="targetName">
        <value>theTargetBean</value>
    </property>
</bean>

첫 번째 형식이 두 번째 형식보다 더 좋은 이유는 idref 표시를 사용하여 용기를 배치할 때 인용된 bean이 존재하는지 검증할 수 있기 때문이다.두 번째 방식에서는client bean에 전달된 targetName 속성 값이 검증되지 않았습니다.
인용된 bean이 같은 XML 파일에 있고 bean 이름이 bean id라면 local 속성을 사용할 수 있습니다. 이 속성은 XML 해석기가 XML 파일을 분석할 때 인용된 bean을 검증할 수 있도록 합니다.
예:
<idref local="theTargetBean"/>

depends-on 속성은 현재 bean을 초기화하기 전에 한 개 이상의 bean이 초기화되도록 현저하게 강제할 수 있습니다.예를 들어 클래스의 정적 블록이 초기화되었을 때 데이터베이스 구동 등록과 같다.여러 개의 bean에 대한 의존을 나타낼 필요가 있으면'depends-on'에서 지정한 여러 개의 bean 이름을 구분자로 구분할 수 있으며 구분자는 쉼표, 빈칸, 분호 등이 될 수 있습니다.
<bean id="beanOne" class="ExampleBean" depends-on="manager"/>
<bean id="manager" class="ManagerBean" />

ApplicationContext가 실행하는 기본 동작은 시작할 때 모든singleton bean을 미리 실례화하는 것입니다.만약singleton bean이 Application Context에서 초기화할 때 미리 실례화되기를 원하지 않는다면, bean을 지연 실례화로 설정할 수 있습니다.지연 초기화 bean은 IoC 용기가 시작될 때인지, 처음 사용될 때 실례화될 때인지 알려 줍니다.XML 프로필에서 지연 초기화는 요소의 lazy-init 속성을 통해 제어됩니다.
XML 형식으로 bean을 설정할 때, 요소의 autowire-candidate 속성은false로 설정할 수 있으며, 용기가 자동 조립 대상을 찾을 때 이 bean을 고려하지 않습니다.
경험에 따르면 모든 상태가 있는 bean에는prototype 작용역을 사용해야 하고, 상태가 없는 bean에는singleton 작용역을 사용해야 한다.
Spring의 Initializing Bean과Disposable Bean 두 로고 인터페이스를 실현한 bean은 초기화하고 분석할 때 용기에서 전자의afterProperties Set () 방법과 후자의destroy () 방법을 호출합니다.
Initializing Bean 인터페이스를 사용하지 마십시오. 코드와 Spring을 결합시킬 수 있기 때문에, Bean 정의에서 일반적인 초기화 방법을 지정할 수 있습니다. 즉, XML 프로필에서 init-method 속성을 지정해서 완성할 수 있습니다.또한 DisposableBean 로고 인터페이스를 사용하는 것을 피해야 한다. (이 인터페이스를 사용하는 것을 권장하지 않는다. 코드를 Spring과 결합시킬 수 있기 때문이다.) bean 정의에서 일반적인 분석 방법을 지정할 수 있다. 즉, XML 프로필에서destroy-method 속성을 지정해서 완성할 수 있다.
맨 윗부분 요소'default-init-method'속성의 출현은 Spring IoC 용기에서 bean의 이름이'init'인 방법을 초기화 방법으로 식별하고, bean이 생성되고 조립될 때, bean류가 이러한 방법을 가지고 있다면 적당한 시기에 호출될 것입니다.유사하게 구성 분석 방법의 리셋은 맨 윗부분 요소에서'default-destroy-method'속성을 사용합니다.
이루어지다springframework.beans.factory.BeanFactory Aware 인터페이스의 클래스입니다. BeanFactory가 만들어지면 BeanFactory를 만드는 것을 가리키는 인용이 있습니다.비안이 빈 팩토리를 가리키는 인용을 가지게 하는 것이다.그러나 일반적으로 사용을 피해야 한다. 왜냐하면 이렇게 하면 코드가 스프링과 결합되고 전환 제어의 원칙에 위반되기 때문이다(협동자는 속성으로 bean에 제공해야 한다).
ObjectFactoryCreatingFactoryBean과 BeanFactoryAware의 차이점은 반전을 제어하는 원칙을 위반하지 않았기 때문이다. 왜냐하면 어떤 bean이 이 FactoryBean을 주입한 후에 의존하는 bean은 이 ObjectFactory에서 제공하기 때문에 bean에 의존하는 일을 더 많이 할 수 있다.
만약 비안이 org를 실현했다면.springframework.beans.factory.BeanName Aware 인터페이스가 하나의 BeanFactory에 배치되어 있으며, BeanFactory는 이 인터페이스의 setBeanName () 방법을 통해 배치될 때의 bean id를 알려 줍니다.bean 속성이 설정된 후, InitializingBean의afterProperties Set이나 사용자 정의 init-method와 같은 초기화 리셋이 실행되기 전에 이 인터페이스의 리셋 방법이 호출됩니다.
org.springframework.beans.factory.config.BeanPostProcessor 인터페이스에는 두 가지 콜백 방법이 있습니다.이 인터페이스의 구현 클래스가 등록되면 (이 등록을 어떻게 하는지 다음 글 참조) 용기의 백업 프로세서 (post-processor) 로 초기화 방법 (예: 애프터 Properties Set, 임의로 설명된 init 방법) 을 호출하기 전에, 백업 프로세서는 용기에서 각각 리셋을 가져옵니다.백엔드 프로세서는 이 bean의 실례에 따라 원하는 동작을 실행할 수 있습니다. 이 리셋을 완전히 무시하는 것을 포함합니다.하나의 bean 백업 프로세서는 일반적으로 로고 인터페이스를 검사하거나, 하나의 bean을 하나의 proxy로 포장하는 일을 한다.일부 Spring AOP의 베이스 처리도 bean 백업 프로세서를 통해 프록시 포장 논리를 실행합니다.
BeanPostProcessor를 지연 초기화로 표시하지 마십시오.만약 당신이 이렇게 한다면, Spring 용기는 그것들을 등록하지 않을 것이며, 사용자 정의 논리는 적용될 수 없습니다.만약 요소의 정의에서'default-lazy-init'속성을 사용했다면, 각각의 BeanPost Processor가'lazy-init='false'로 표시되어 있음을 확신하십시오
Spring의 BeanPostProcessor 구현에서 로고 인터페이스를 호출하거나 주석을 사용하는 것은 Spring IoC 용기를 확장하는 데 자주 사용되는 방법입니다.
BeanFactoryPostProcessor는 bean의 정의(메타데이터 설정)를 처리할 수 있습니다.즉, Spring IoC 용기는 BeanFactoryPostProcessor가 용기에 실제적으로 다른 bean을 실례화하기 전에 설정 메타데이터를 읽고 수정할 수 있도록 합니다.여러 BeanFactoryPostProcessor를 구성합니다.'order'속성을 설정해서 BeanFactoryPostProcessor의 실행 순서를 제어할 수 있습니다. (BeanFactoryPostProcessor가 Ordered 인터페이스를 실현했을 때만 이 속성을 설정할 수 있기 때문에 BeanFactoryPostProcessor를 실현할 때 Orderd 인터페이스를 실현하는 것을 고려해야 합니다)
PlapertyPlaceholderConfigurer는 bean공장 백업 프로세서의 구현으로 BeanFactory 정의의 일부 속성 값을 다른 단독 표준 Java Properties 파일에 넣을 수 있습니다.
Property Override Configurer는 다른 beanfactory processor입니다.properties 파일의 값을 사용하여 기존의 값을 덮어쓸 수 있습니다
하나의 프로세스 or는 실례를 바꾸는 것이고, 하나는 정의를 바꾸는 것이다
FactoryBean 인터페이스는 Spring IoC 컨테이너에 삽입하여 인스턴스 로직을 사용자 정의하는 인터페이스 포인트입니다.만약 복잡한 초기화 코드를 자바로 더 잘 표시할 수 있다면, 지루한 XML을 사용하지 않고, 자신만의 팩토리 빈을 만들고, 그 클래스에 복잡한 초기화 동작을 쓴 다음, 사용자 정의 팩토리 빈을 용기에 삽입할 수 있습니다.
-----spring bean id name
id 속성 이름은 XML의 명칭 규범을 충족시켜야 합니다. 왜냐하면 id는 사실 XML에 한정되어 있기 때문입니다.총괄적으로 말하면 자바 변수의 명칭에 해당한다. 숫자, 기호로 시작할 수 없고 빈칸이 있을 수 없다. 예를 들어 123,?ad, "ab"등은 모두 규범에 맞지 않습니다. Spring은 초기화할 때 오류를 보고합니다
name 속성은 이러한 제한이 없습니다. 예를 들어?ab,123 등이지만 빈칸을 사용할 수 없습니다. 예를 들어 "a b", "abc"는 초기화할 때 오류가 발생하지 않지만 getBean () 에서는 오류가 발생합니다.
그러나 설정 파일에는 두 개의name가 같은 이 나타날 수 있습니다. getBean () 으로 실례를 되돌릴 때, 뒤에 있는 Bean이 되돌려집니다. 앞에 있는 이 뒤에 있는 같은 이름의 으로 덮어씌워져 있을 것입니다.이를 감안하여, 무심코 같은 이름으로 덮어쓰는 현상을 피하기 위해, 가능한 한 id 속성을 사용하고name 속성을 사용하지 마십시오.
만약 id와name이 지정되지 않았다면, 클래스 전체 이름을name으로 사용합니다. 예를 들어 를 사용하면
getBean("com.stamen.BeanLifeCycleImpl")은 인스턴스를 반환합니다.

좋은 웹페이지 즐겨찾기