Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:组织方式注入,setter注入,基于注解的注入。
组织方式注入
组织器注入:保证了一些需要的属性在Bean实例化时就设置,而且确保了bean实例在实例化后就可以使用.
1.在类中,不用为属性设置setter方式,只需提供组织方式即可
2.在组织文件中设置该类bean,并设置组织器,在设置组织器中用
//ApplicationContext.xml
提供组织方式
public class UserAction {
private String name;
public UserAction(String name) {
this.name = name;
}
}
setter注入
1.凭据property标签的name属性的值去找对应的setter方式.
例如: name= “aa” 对应的就是setAa方式.
2.由于属性注入具有可选性和灵活性高的优点,是实际上最常用的注入方式.
3.属性注入要求bean提供一个默认的组织函数,并为需要注入的属性提供对应的setter方式.spring先挪用bean默认的组织函数实例化bean工具,然后通过反射机制的方式挪用setter方式注入属性值.
4.另有一点需要注重:若是通过set方式注入属性,那么spring会通过默认的空参组织方式来实例化工具,以是若是在类中写了一个带有参数的组织方式,一定要把空参数的组织方式写上,否则spring没有办法实例化工具,导致报错。
//ApplicationContext.xml
提供setting方式
public class UserAction {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
注解注入
@Autowired(组织,接口,方式)
自动装配,默认凭据类型注入
—属性Required
1.@Autowired(required=true):当使用@Autowired注解的时刻,实在默认就是@Autowired(required=true),示意注入的时刻,该bean必须存在,否则就会注入失败
2.@Autowired(required=false):示意忽略当前要注入的bean,若是有直接注入,没有跳过,不会报错。
3.required属性寄义和@Required一样,只是@Required只适用于基于XML设置的setter注入方式,只能打在setting方式上。
public class AutowiredAction {
private String name;
private List list;
@Autowired
private AutowiredAction(String name) {
this.name=name;
}
public String getName() {
return name;
}
@Autowired
public void setName(String name) {
this.name = name;
}
@Autowired(required = true)
private void initName(String name,List list) {
this.name = name;
this.list = list;
}
}
接口
public interface AutowiredIn {
@Autowired
void initName(String name,Integer age);
}
@Resource 默认根据名称装配
可以标注在字段或属性的setter方式上。默认根据字段的名称去Spring容器中找依赖工具,若是没有找到,退回到根据类型查找
若是设置了属性name
那么只能根据名称找依赖工具
public class ResourceAction {
@Resource(name=”name”)
private String name;
@Resource
private List list;
public String getName() {
return name;
}
@Resource
public void setName(String name) {
this.name = name;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
原文链接:https://www.cnblogs.com/blogxu/p/gitzl.html
本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。
今天的文章java的依赖注入_Java依赖注入的三种方式分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11397.html