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 로 설정 합 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.