Spring ioc 주입의 세 가지 방법은 다음과 같습니다. 1. Setter 메소드 주입. 컨테이너가 매개변수 없는 생성자 또는 매개변수 없는 정적 팩토리 메소드를 호출하여 Bean을 인스턴스화한 후 Bean의 Setter 메소드를 호출합니다. 2. 생성자 메소드 주입. 3. P 네임스페이스 삽입.
이 튜토리얼의 운영 환경: windows7 시스템, java8 버전, Dell G3 컴퓨터.
Setter 메소드 주입은 컨테이너가 매개변수 없는 생성자 또는 매개변수 없는 정적 팩토리 메소드를 호출하여 Bean을 인스턴스화하는 경우입니다. 그 후, setter 기반 종속성 주입을 구현하는 Bean의 setter 메소드가 호출됩니다.
package com.jpeony.spring.setter; import com.jpeony.spring.common.HelloServiceImpl;public class HelloWord { private HelloService helloService; // setter方式注入Bean public void setHelloService(HelloService helloService) { this.helloService = helloService; } @Override public void selfIntroduction() { // 向大家打招呼 helloService.sayHello("大家好!"); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Bean声明: 该bean类似于javaConfig中的@Bean注解; 用于创建bean的类通过class属性来指定,并且需要使用全限定的类名。 通过id指定bean的ID。如果不显示指定,默认使用class的全限定名进行命名。 eg: com.jpeony.spring.common.HelloServiceImpl#0,其#0是一个计数器的形式, 用来区分相同类型的其他bean。 使用自动化命名很方便,但是没有多少实际用处,还是建议自己给bean显示设定ID。 --> <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/> <!-- setter注入bean --> <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord"> <property name="helloService" ref="helloService"/> </bean> </beans>
생성자 종속성 주입은 클래스에 일련의 매개변수가 있으며 각 매개변수는 다른 클래스에 대한 종속성을 나타냅니다.
package com.jpeony.spring.setter; import com.jpeony.spring.common.HelloServiceImpl; public class HelloWord { private HelloService helloService; // 构造方法注入 public HelloWord (HelloService helloService) { this.helloService = helloService; } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Bean声明: 该bean类似于javaConfig中的@Bean注解; 用于创建bean的类通过class属性来指定,并且需要使用全限定的类名。 通过id指定bean的ID。如果不显示指定,默认使用class的全限定名进行命名。 eg: com.jpeony.spring.common.HelloServiceImpl#0,其#0是一个计数器的形式, 用来区分相同类型的其他bean。 使用自动化命名很方便,但是没有多少实际用处,还是建议自己给bean显示设定ID。 --> <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/> <!-- 构造方法注入bean --> <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord"> <constructor-arg><ref bean="helloService"/></constructor-arg> </bean> </beans>
package com.jpeony.spring.setter; import com.jpeony.spring.common.HelloServiceImpl; public class HelloWord { //名字 private String name; //年龄 private String age; //方法类 private HelloService helloService; public void setName (String name) { this.name = name; } public void setAge (String age) { this.age = age; } public void setHelloService(HelloService helloService) { this.helloService = helloService; } @Override public void selfIntroduction() { // 向大家打招呼 helloService.sayHello("我叫"+ name + ",今年" + age + "岁,大家好!"); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- 引入p命名标签 --> 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"> <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/> <!-- p标签注入bean --> <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord" p:name="明明" p:age="24" p:helloService-ref="helloService"></bean> </beans>
컬렉션 bean에 P 태그 삽입
package com.jpeony.spring.setter; import com.jpeony.spring.common.HelloServiceImpl; import java.util.List; public class HelloWord { //名字 private String name; //年龄 private String age; //方法类 private List<HelloService> helloServices; public void setName (String name) { this.name = name; } public void setAge (String age) { this.age = age; } public void setHelloServices(List<HelloService> helloServices) { this.helloServices = helloServices; } @Override public void selfIntroduction() { // 向大家打招呼 helloServices[0].sayHello("我叫"+ name + ",今年" + age + "岁,大家好!"); } }
930406f08da8ee4a2ff134b688d29d1d 4f80a00a6ad72fb96688de7ce488e30a xmlns:p="http://www.springframework.org/schema/p" 5e49173f29e4a67ddaa90131e7a99dea xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 9df278062f1e81860f65eb12100b2b72 a9792929f72ef4e41fe56b009215d491 ........... 4bb0e59fd50cbfe6f6ce2215b9d94243 1e928befbc0f48f44eec15e59207e744 093f30557f32572e8ac2e4ba8bcdba31 30fe8a23ea2fb08456a9dcc68d3d7007 0cb3faf542ecac6f480b475d17bb9dd0 ea108911772f997d1c30f6a3a707e315 516e0c3bf2fb206b6995515c46ebe8c94bb0e59fd50cbfe6f6ce2215b9d94243 a6748f3712e7c0e1f60ffca24b3db7b0
더 많은 컴퓨터 프로그래밍 관련 지식을 보려면 프로그래밍 입문을 방문하세요. !
위 내용은 Spring ioc 주입의 세 가지 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!