Spring基础(1) : 自动装配
1.自动装配
1.1 byType
1.1.1根据类型自动匹配,若当前没有类型可以注入或者存在多个类型可以注入,则失败。必须要有对于的setter方法
public class Person{
public String name;
public int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return this.name+" "+this.age;
}
} public class Group {
public Person pafter;
public Person getPafter() {
return pafter;
}
public void setPafte(Person pafter) {
this.pafter = pafter;
}
} public class Main {
static ApplicationContext context = new ClassPathXmlApplicationContext("a.xml");
public static void main(String[] args){
Group g = context.getBean("g1",Group.class);
System.out.println(g.getPafter().toString());
}
} <?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-3.0.xsd"> <bean id="pafter" class="com.Person">
<property name="name" value="liaohang"/>
<property name="age" value="26"/>
</bean> <bean id="p2" class="com.Person" autowire-candidate="false">
<property name="name" value="ZhangSan"/>
<property name="age" value="26"/>
</bean> <bean id="g1" class="com.Group" autowire="byType">
</bean>
</beans>
这个xml存在两个person bean,为了避免歧义,将p2设置autowire-candidate="false",则容器会自动过滤p2,最终p1被注入到group中。
1.1.2 根据名称自动注入,是指 bean名称与setter方法后缀名称 匹配
<bean id="p1234" class="com.Person">
<property name="name" value="liaohang"/>
<property name="age" value="26"/>
</bean>
<bean id="g1" class="com.Group" autowire="byName"/> public class Group {
public Person pafter;
public Person getPafter() {
return pafter;
}
public void setP1234(Person pafter) {
this.pafter = pafter;
}
}
上面的xml配置和 bean则可以自动注入。
1.13 根据构造函数注入,是按构造函数参数中的类型进行自动注入,与构造函数参数名称无关。
<bean id="p2" class="com.Person" autowire-candidate="false">
<property name="name" value="liaohang"/>
<property name="age" value="26"/>
</bean>
<bean id="g1" class="com.Group" autowire="constructor"/> public class Group {
public Person pafter;
public Person getPafter() {
return pafter;
} public Group(Person p1){
this.pafter =p1;
}
} public class Main {
static ApplicationContext context = new ClassPathXmlApplicationContext("a.xml");
public static void main(String[] args){
Group g = context.getBean("g1",Group.class);
System.out.println(g.getPafter().toString());
}
}
2.自动装配注解使用
@Configuration
@ComponentScan
public class Config1 { } @Component
public class Leader {
public String lead ="hello leader";
} @Component
@PropertySource("p.properties")
public class Person { @Value("${name}")
public String name; @Autowired
public Leader leader; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
} public static void main(String[] args){
ApplicationContext context = new AnnotationConfigApplicationContext(Config1.class);
Person p = context.getBean("person",Person.class);
System.out.println(p.leader.lead);
}
打印:
hello leader
Spring基础(1) : 自动装配的更多相关文章
- Spring(六)之自动装配
一.自动装配模型 下面是自动连接模式,可以用来指示Spring容器使用自动连接进行依赖注入.您可以使用元素的autowire属性为bean定义指定autowire模式. 可以使用 byType 或者 ...
- Spring 由构造函数自动装配
Spring 由构造函数自动装配,这种模式与 byType 非常相似,但它应用于构造器参数. Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 ...
- 【面试普通人VS高手系列】Spring Boot中自动装配机制的原理
最近一个粉丝说,他面试了4个公司,有三个公司问他:"Spring Boot 中自动装配机制的原理" 他回答了,感觉没回答错误,但是怎么就没给offer呢? 对于这个问题,看看普通人 ...
- Spring基础知识之装配Bean
装配(wiring):创建应用对象之间协作关系的行为.这是依赖注入的本质. Spring配置的可选方案 Spring提供了三种装配机智: 1)在XML中进行显示装配 2)在java中进行显示装配 3) ...
- Spring基于注解自动装配
前面我们介绍Spring IoC装载的时候,使用XML配置这种方法来装配Bean,这种方法可以很直观的看到每个Bean的依赖,但缺点也很明显:写起来非常繁琐,每增加一个组件,就必须把新的Bean配置到 ...
- Spring - 配置Bean - 自动装配 关系 作用域 引用外部属性文件
1 Autowire自动装配1.1 使用:只需在<bean>中使用autowire元素<bean id="student" class="com.kej ...
- Spring 学习——Spring注解——Autowiring(自动装配)
装配方式 方式一:默认 方式二:byName:根据属性名称自动装配.会查找Bean容器内部所有初始化的与属性名成相同的Bean,自动装配.(需要通过set方法注入,注入Bean的id名称需要和实体类的 ...
- spring bean autowire自动装配
转自:http://blog.csdn.net/xiao_jun_0820/article/details/7233139 autowire="byName"会自动装配属性与Bea ...
- Spring学习笔记--自动装配Bean属性
Spring提供了四种类型的自动装配策略: byName – 把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中. byType – 把与Bean的属性具有相同类型 ...
随机推荐
- Node.js之绝对选择(2018版)
[这篇是很早期的文字,由于引用较广泛,担心误导,故按照现在的情形做一些修改] 几年前,完全放弃Asp.net,彻底脱离微软方向.Web开发,在公司团队中,一概使用Node.js.Mongodb.Git ...
- C++动态(显式)调用 C++ dll
1.创建DLL新项目Dll1,Dll1.cpp: extern "C" __declspec(dllexport) const char* myfunc() { return &q ...
- C# 子线程调用主线程窗体的解决方法
摘自其他人博客,自己试过确实解决问题.(如在自己定义的线程里面给textbox赋值) 由于Windows窗体控件本质上不是线程安全的.因此如果有两个或多个线程适度操作某一控件的状态(set value ...
- 数据导出之winfrom导出word(二)
本篇文章介绍了根据word模板导出word文档的方法. 一.获取模板地址 WordDocFileHelper WordTem = new WordDocFileHelper(); string pat ...
- Linux 安装JavaEE环境之Tomcat安装笔记
1.先用xftp将tomcat的压缩包上传到 /opt/ 2.在/usr/local/下使用命令mkdir tomcat 创建tomcat目录 将apache-tomcat-7.0.70.tar.gz ...
- XSS钓鱼某网约车后台一探究竟,乘客隐私暴露引发思考
i春秋作家:onls辜釉 最近的某顺风车命案,把网约车平台推上了风口浪尖,也将隐私信息管理.审查的讨论面进一步扩大.这让我不禁联想起自己今年春节的遭遇,当时公司放假准备回家过年,我妈给我推荐了一个在我 ...
- nginx root&alias 文件路径配置
nginx 指定文件路径有两种方式 root 和 alias,root 与 alias 主要区别在于 nginx 如何解释 location 后面的 uri,这会使两者分别以不同的方式将请求映射到服务 ...
- js 判断 obj 是否是 数组 array
参考文章: http://www.kuitao8.com/20140511/2418.shtml function objType(obj) { //var type = Object.prototy ...
- iOS-IAP内购的那些事(iOS内购漏单的问题)
前言 说起内购,其实挺令开发者厌烦的,原因呢,先不说漏单的问题,首先苹果要扣除30%的销售额哦,可恨不?(我觉得可恨),有些想办法先隐藏掉第三方支付(支付宝.微信等),等项目上线了,再跳过内购使用第三 ...
- Python:SQLMap的工作流程
流程图 代码解析 后面补充…… 版权 作 者:曾是土木人 新浪微博:http://weibo.com/cstmr 转载请注明出处:http://www.cnblogs.com/hongfei/p/ ...