spring ioc注入的三种方式是:1、Setter方法注入,是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法。2、构造方法注入。3、P命名空间注入。

本教程操作环境:windows7系统、java8版本、Dell G3电脑。
Spring IOC(依赖注入的三种方式):
1、Setter方法注入
Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于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>
2、构造方法注入
构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。
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>
3、P命名空间注入
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>
P标签注入集合bean
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 + "岁,大家好!");    } }<?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" <!-- 引入util命名标签 --> 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"> <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/> <bean id="helloService2" class="com.jpeony.spring.common.HelloServiceImpl"> ........... </bean> <util:list id="helloServices"> <ref bean="helloService"/> <ref bean="helloService2"/> </util:list> <!-- p标签注入bean --> <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord" p:name="明明" p:age="24" p:helloServices-ref="helloServices"></bean> </beans>
更多计算机编程相关知识,请访问:编程入门!!
以上就是spring ioc注入的三种方式是什么的知识。速戳>>知识兔学习精品课!
