Spring 학습 의 Bean 조립 여러 가지 방법

6778 단어 springBean
저 는 요즘 Spring 프레임 워 크 를 연구 하고 있 습 니 다.그럼 오늘 도 학습 노트 로 하 겠 습 니 다!Bean 의 조립 방법 을 어떻게 실현 하 는 지 배 워 보 세 요.
Bean 의 프로필
자바 개발 자 들 은 일반적으로 자바 빈 이라는 개념 을 들 어 본 적 이 있 습 니 다.이른바 자바 빈 이라는 개념 은 바로 sun 규범 에 부합 되 는 일반적인 자바 대상 입 니 다.이런 대상 은 빈 구조 기 를 가지 고 속성 에 set/get 방법 을 추가 해 야 합 니 다.이렇게 디자인 한 이 유 는 반사 기술 로 조작 하 는 것 을 편리 하 게 하기 위해 서 입 니 다.그리고 Spring 에서 Bean 의 개념 은 상대 적 으로 광범 위 합 니 다.Spring 의 Bean 은 기본적으로 사용 해 야 할 모든 대상 을 포함 할 수 있다.즉,기본적으로 Spring 의 대상 을 Bean 이 라 고 할 수 있다.
Bean 의 조립
학습 의존 주입 을 할 때 하나의 개념 을 언급 하면 대상 의 생 성 을 제3자 에 게 맡 기 고 제3자 가 주입 하 는 것 이다.Spring 의 Ioc 용 기 는 이러한 역할 을 한다.즉,Spring 의 Ioc 용 기 를 통 해 통제 의 반전 을 실현 하고 대상 의 생 성 등 을 Spring 에 맡 기 며 서비스 대상 은 사용 만 하면 된다 는 것 이다.Bean 을 설정 하 는 과정 은 Spring 에 게 우리 가 만 들 대상 과 그들 간 의 의존 관 계 를 알려 주 는 것 입 니 다.그리고 Spring 의 Ioc 용 기 는 시작 한 후에 설정 정보 에 따라 Bean 을 만 들 고 해당 하 는 서비스 에 주입 합 니 다.
Bean 의 설정 방식
Spring 은 개발 자 에 게 다양한 Bean 설정 방식 을 제공 합 니 다.XML 설정,주해 설정,자바 코드 설정,Groovy 설정 등 을 포함 합 니 다.설정 방식 이 다양 하지만 이 여러 가지 방식 의 목적 은 일치 합 니 다.그것 은 Spring 이 어떤 대상 을 만 들 고 그들의 의존 관 계 를 만 드 는 지 알려 주 는 것 입 니 다.다음은 XML 기반 설정 과 주석 기반 설정 을 살 펴 보 겠 습 니 다.이 두 가지 설정 방식 은 현재 비교적 광범 위 하 게 사용 되 고 있 습 니 다.
XML 기반 설정
앞에서 Spring 개발 환경 조합 에서 우리 가 사용 한 Bean 을 조립 하 는 방식 은 XML 을 바탕 으로 하 는 배치 방식 이다.이런 배치 방식 은 Spring 의 가장 원시 적 인 조립 방식 을 사용 하 는 것 이다.주로 XML 로 대상 과 대상 간 의 의존 관 계 를 설명 한 다음 에 하나의 작은 사례 를 통 해 Spring 에서 XML 로 Bean 을 어떻게 배치 하 는 지 구체 적 으로 살 펴 보 자.

/**
 *    ,           
 */
class Location{
  private String country;
  private String city;

  //   set/get  

  //   toString  
}

/**
 *     
 */
public class School {

  //              
  private String name;
  //     ,   Location  
  private Location location;
  //           
  private List<String> teachers;
  private Set<String> buildings;
  private Map<String, String> departments;


  public School() {
    teachers = new ArrayList<>();
    buildings = new HashSet<>();
    departments = new HashMap<>();
  }
  //          
  public School(String name) {
    this();
    this.name = name;
  }

  //   set/get  

  //   toString  

}

대응 하 는 프로필 을 작성 합 니 다.beanConfig.xml 는 다음 과 같 습 니 다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  <!--  Location bean,                -->
  <bean id="location" class="cn.xuhuanfeng.domain.Location">
    <property name="city" value="china"/>
    <property name="country" value="ShenZhen"/>
  </bean>

  <!--  School bean,          -->
  <bean id="school" class="cn.xuhuanfeng.domain.School">

    <!--      index              ,type            -->
    <constructor-arg index="0" type="java.lang.String" value="SZU"/>

    <!--  location   Location  ,        ref,         bean-->
    <property name="location" ref="location"/>

    <!--  set  -->
    <property name="buildings">
      <set>
        <value>Domain A</value>
        <value>Domain B</value>
        <value>Domain C</value>
      </set>
    </property>

    <!--  list  -->
    <property name="teachers">
      <list>
        <value>Dr.Wang</value>
        <value>Pro.Chen</value>
        <value>Miss.Wu</value>
      </list>
    </property>

    <!--  map  -->
    <property name="departments">
      <map>
        <entry key="cs" value="Dr.ming"/>
        <entry key="se" value="Dr.liu"/>
      </map>
    </property>
  </bean>

</beans>

Spring 은 우리 에 게 매우 편리 한 Bean 의 배치 방식 과 대응 하 는 주입 방식 을 제공 하 는 것 을 볼 수 있다.
주석 기반 설정
주석 방식 을 통 해 Bean 정보 와 Bean 간 의 의존 관 계 를 설정 하 는 것 은 Spring 2.5 이후 에 도 입 된 새로운 기능 입 니 다.주요 원인 은 XML 의 설정 과정 이 비교적 번 거 롭 고 소량의 정 보 를 설정 하려 면 대량의 코드 를 작성 해 야 하기 때 문 입 니 다.물론 그 장점 은 완전한 설정 정 보 를 묘사 할 수 있다 는 것 이다.이것 은 다른 설정 방식 이 부족 한 것 이다.
Spring 에 서 는 Bean 을 설정 하 는 다양한 주 해 를 제공 합 니 다.@Component 는 가장 기본 적 인 성명 방식 입 니 다.Spring 은 Component 의 대상 을 초기 화하 고 조립 하 는 동시에 레이 어 링 관 리 를 잘 하기 위해@Controller,@Service,@Repository 를 제공 합 니 다.이 세 가지 본질은@Component 입 니 다.더 잘 관리 하기 위 한 추가 성명 에 불과 하 다.

@Component
public class Location{
  private String country;
  private String city;
}

@Component
public class School {

  @Value("SZU")
  private String name;

  @Autowired //     
  private Location location;

  // ....
}

주 해 를 통 해 설명 하 는 것 이 매우 편리 하 다 는 것 을 알 수 있다.대응 하 는 Bean 에@Component 를 더 하면 되 고 주입 해 야 할 곳 에 Autowired 를 더 하면 된다.
단,주 해 를 설명 한 후에 Ioc 용 기 는 Bean 의 존 재 를 감지 할 수 없 기 때문에 설정 파일 에 IoC 용 기 를 열 어 자동 으로 스 캔 하 는 코드 를 추가 해 야 합 니 다.다음 과 같 습 니 다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

  <!--      , base-package         --> 
  <context:component-scan base-package="cn.xuhuanfeng.domain" />

</beans>

주 해 를 통 해 조립 하 는 것 은 비교적 편리 하지만 주해 자체 가 복잡 한 설정 정 보 를 설명 하 는 데 사용 되 기 때문에 일반적으로 XML 에 맞 춰 설정 하고 일부 간단 한 설정 은 주 해 를 사용 하 며 비교적 복잡 한 배 치 는 XML 로 설정 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기