>Java >java지도 시간 >Spring 종속성 주입의 세 가지 방법은 무엇입니까?

Spring 종속성 주입의 세 가지 방법은 무엇입니까?

王林
王林원래의
2020-04-29 13:26:136241검색

Spring 종속성 주입의 세 가지 방법은 무엇입니까?

Spring 종속성 주입(DI)의 세 가지 방법은 다음과 같습니다.

1. 인터페이스 주입

2. Setter 메서드 주입

3. 생성자 메서드 주입

(동영상 튜토리얼 추천: java 동영상 ) 이러한 세 가지 유형의 종속성 주입이 Spring에서 어떻게 구현되는지 소개하겠습니다.

먼저 다음 클래스가 필요합니다:

Interface Login.java

인터페이스 구현 클래스 LoginImpl.java

처리 클래스 LoginAction.java

다음과 같은 테스트 클래스 TestMain.java

LoginImpl.java도 있습니다.

package com.spring.test.di;

public class LoginImpl implements Login{

public String getName(){

return "fengyun";

}

}

TestMain.java

package com.spring.test.di;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class TestMain {

/**

* @param args

*/

public static void main(String[] args) {// 得到ApplicationContext对象

ApplicationContext ctx = new FileSystemXmlApplicationContext(

"applicationContext.xml");

// 得到Bean

LoginAction loginAction = (LoginAction) ctx.getBean("loginAction");

loginAction.execute();

}

}

LoginAction.java는 사용된 주입 방법에 따라 약간 다를 수 있습니다.

삽입 방법에 따라 LoginAction.java 클래스를 살펴보겠습니다.

Setter 메서드 주입:

package com.spring.test.di;

public class LoginAction {

private Login login;

public void execute() {

String name = login.getName();

System.out.print("My Name Is " + name);

}

/**

* @return the login

*/

public Logic getLogin() {

return login;

}

/**

* @param login

* the login to set

*/

public void setLogin(Login login) {

this.login = login;

}

}
는 LoginAction에서 로그인 유형 변수 login을 정의하지 않고 해당 setter/getter 메서드만 정의합니다. 여기서는 Spring의 종속성 주입 방법을 사용하고 있습니다.

applicationContext.xml 구성 파일은 다음과 같습니다.

<bean id="login" class="com.spring.test.di.LoginImpl"/>
<bean id="loginAction" class="com.spring.test.di.LoginAction">
<property name="login" ref="login"></property>
</bean>

이제 testMain.java를 실행하면 콘솔에 My Name Is fengyun이 출력되는 것을 확인할 수 있습니다.

좋아요, 스프링의 setter 메소드 주입입니다.

생성자 메서드 주입

이름에서 알 수 있듯이 생성자 메서드 주입은 아래와 같이 DI의 목적을 달성하기 위해 LoginAction의 생성자에 의존한다는 의미입니다.

LoginAction.java

package com.spring.test.di;

public class LoginAction {

private Login login;

public LoginAction(Login login) {

this.login = login;

}

public void execute() {

String name = login.getName();

System.out.print("My Name Is " + name);

}

}

여기에 LoginAction의 생성자를 추가했습니다

applicationContext.xml 구성 파일은 다음과 같습니다.

<bean id="login" class="com.spring.test.di.LoginImpl"/>
<bean id="loginAction" class="com.spring.test.di.LoginAction">
<constructor­arg index="0" ref="login"></constructor­arg>
</bean>

구성에는 constructorarg를 사용합니다. index 속성은 생성자 메서드에서 매개변수의 순서를 나타내는 데 사용됩니다. 매개변수가 여러 개인 경우 0,1부터 순서대로 구성됩니다. ...

이제 testMain.java를 실행할 수 있으며 결과는 Setter 메소드 주입을 사용한 것과 똑같습니다.

한 가지 주의할 점은 생성자에 여러 매개변수가 있는 경우(예: 매개변수 1, 매개변수 2, 매개변수 2가 매개변수 1에 종속됨), 이 경우 생성자의 순서와 매개변수 1에 주의해야 합니다. 매개변수 2 이전에 배치되어야 합니다.

자주 사용하지 않는 인터페이스 주입에 대해 계속 이야기해 보겠습니다. LoginAction을 예로 들어 보겠습니다.

LoginAction.java

package com.spring.test.di;

public class LoginAction {

private Logic login;

public void execute() {

try {

Object obj = Class.forName("com.spring.test.di.LoginImpl")

.newInstance();

login = (Login) obj;

String name = login.getName();

System.out.print("My Name Is " + name);

} catch (Exception e) {

e.printStackTrace();

}

}

}

구성 파일:

<bean id="logic" class="com.spring.test.di.LoginImpl"/>
<bean id="loginAction" class="com.spring.test.di.LoginAction">
</bean>

직장에서 가장 일반적으로 사용되는 것은 Setter와 생성자 두 가지 주입 방법.

추천 튜토리얼:

java 입문 프로그램

위 내용은 Spring 종속성 주입의 세 가지 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.