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
