머리말
정상적인 Java 개발에서 프로그래머는 특정 클래스의 다른 클래스에 의존해야하므로 일반적으로 새로운 클래스에 new 클래스를 사용한 다음 클래스 인스턴스를 호출해야합니다. 이 개발의 문제점은 new 클래스 인스턴스가 관리하기 쉽지 않다는 것입니다. Spring은 종속성 주입 아이디어, 즉 종속성 클래스가 프로그래머에 의해 인스턴스화되지는 않지만 스프링 컨테이너를 통해 인스턴스를 new 하고 인스턴스를 객체가 필요한 클래스에 지정하도록 도와줍니다. 의존성 주입의 또 다른 용어는 "제어 역전"입니다. 일반적인 이해는 다음과 같습니다. 일반적으로 우리는 new 인스턴스이며,이 인스턴스의 제어는 우리의 프로그래머이며, 제어 역전은 new 인스턴스의 작업이 미국 프로그래머에 의해 수행되지 않지만 스프링 컨테이너로 넘겨 져 있음을 의미합니다.
봄에 의존성을 주입하는 4 가지 방법이 있습니다
1. 주입 설정 (일반적으로 속성 주입이라고도 함)
2. 생성자 주입
3. 인터페이스 주입 (이것은 기본적으로 현재 사용되지 않음)
4. 주석 주입 (@autowire)
아래는 세트 방법 주입, 생성자 주입 및 주석 주입의 사용의 예입니다.
1. 메소드 주입 설정 (속성 주입)
userdao.java
public class userdao {public void insertuser (사용자) {// 특정 논리 생략}}}Userservice.java
public interface uservice {void InsertUser (사용자);}usererviceimpl.java
public class usererviceimpl은 userservice {private userdao userdao; public void setuserdao (userdao userdao) {this.userdao = userdao; } public void insertUser (사용자 사용자) {userDao.insert (사용자); }}스프링 구성 파일
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : context = "http://www.springframework.org/schema/context"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/scremans/sprdeans-2 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <! <!-<Bean id ="userdao "> </bean> </bean> 이름 = "userDao"ref = "userDao"> </bean> </beans>
위의는 userDao를 userErviceImpl에 주입 할 수 있습니다
2. 생성자 주입
user.java
공개 클래스 사용자 {// 단순화를 위해 두 가지 속성 개인 문자열 이름을 작성하십시오. 개인 정수 시대; // 이름, 연령 공개 사용자 (문자열 이름, int age) {this.name = name; this.age = age; }}이제 스프링 구성 파일을 사용하여 사용자 개체를 주입하십시오.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : context = "http://www.springframework.org/schema/context"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/scremans/sprdeans-2 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <! <!-<Bean id ="user "> <사용자">-구성 요소의 구축물을 생략하십시오. 파라미터의)-> <생성자-아그 유형 = "java.lang.string"index = "0"value = "Zhangsan"/> <constructor-arg type = "java.lang.integer"index = "value ="20> </bean> </beans>
위는 속성 값을 사용자 개체에 주입 할 수 있습니다. 물론, 세트 메소드를 사용하여 예제를 주입하려면 실제로 동일합니다. UserServiceImpl 에 생성자가 필요하고 공식 매개 변수는 userdao이므로 setter 방법이 필요하지 않습니다.
그런 다음 스프링 구성 파일의 쓰기가 이것으로 변경되어야합니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : context = "http://www.springframework.org/schema/context"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/scremans/sprdeans-2 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <!-<ob id id ="userdao "> </bean> </bean> </bean>. 매개 변수는 0에서 시작합니다 (동일한 수의 매개 변수를 갖는 여러 생성자를 피하십시오)-> <생성자 -ARG index = "0"ref = "userDao"> </bean> </beans>
이것은 또한 상기 정해진 방법 주입에 의해 달성 된 효과를 달성 할 수 있습니다.
3. 주석 주입
이 클래스에 @Component,@Service,@Controller 등을 추가하지 않고 성공적으로 @Autowire 할 수 있는지 여부를 시도한 적이 없습니다. 그러나 해당 주석을 해당 레벨에 추가하는 것이 좋습니다. 다음 예에서는 userdao가 모듈 레이어에 속합니다. 봄에는 @Component 주석을 사용할 수 있습니다.
userdao.java
@ComponentPublic Class userDao {public void insertUser (사용자) {// 특정 논리 생략}}}Userservice.java
public interface uservice {void InsertUser (사용자);}usererviceimpl.java
// 해당 스프링 패키지를 소개합니다 @ServicePublic 클래스 usererViceimpl emperservice {@autowire private userdao userdao; public void insertUser (사용자 사용자) {userDao.insert (사용자); }}Spring의 해당 구성 파일
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : context = "http://www.springframework.org/schema/context"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/scremans/sprdeans-2 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <!-모든 패키지를 생략하지 않습니다. 실제 개발에서는 주석 구성 요소와 관련된 패키지를 기반으로 스캔 할 수 있습니다-> <context : component-scan base-package = "*"> <!-구성 요소 스캔-> </context : comperent-scan> <context : annotation-config> <!-주석 프로세서-> 컨텍스트 : Annotation-Config> <oustodao "> <anodao"> id = "userservice"/> </beans>
그러나 개발 프로세스 중에 설정 방법 주입이 활성화되고 주석 주입이 활성화되고 Spring은 먼저 설정 주입을 선택하므로 해당 설정 방법을 제공하는 것을 잊지 않습니다. 그렇지 않으면 실패합니다.
비교를 통해 주석 주입은 다른 주입보다 훨씬 편리하며 코드 및 구성 파일이 적습니다. 개발 과정에서 주석 주입을 사용하는 것이 좋습니다.
요약
위는 봄에 여러 가지 의존성 주입 방법에 대한 완전한 소개입니다. 나는 그것이 당신의 공부 나 일에 당신을 도울 수 있기를 바랍니다. 궁금한 점이 있으면 의사 소통 할 메시지를 남길 수도 있습니다. Wulin.com을 지원 해주셔서 감사합니다.