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"> <constructorarg index="0" ref="login"></constructorarg> </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 중국어 웹사이트의 기타 관련 기사를 참조하세요!