Spring ioc注入的方式有哪些,怎样实现?
导读:这篇文章给大家分享的是Spring ioc注入的方式。小编觉得挺实用的,因此分享给大家做个参考,Spring ioc注入主要有三种方式,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。本教程操作环境:win...
这篇文章给大家分享的是Spring ioc注入的方式。小编觉得挺实用的,因此分享给大家做个参考,Spring ioc注入主要有三种方式,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
本教程操作环境: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 ListHelloService> helloServices; public void setName (String name) { this.name = name; } public void setAge (String age) { this.age = age; } public void setHelloServices(ListHelloService> 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注入的方式的介绍,上述示例具有一定的参考价值,有需要的朋友可以了解看看,希望对大家学习有帮助,想要了解更多可以继续浏览网络其他相关的文章。
文本转载自PHP中文网
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Spring ioc注入的方式有哪些,怎样实现?
本文地址: https://pptw.com/jishu/655183.html