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的属性具有相同类型 ...
随机推荐
- 论文笔记(1)-Dropout-Improving neural networks by preventing co-adaptation of feature detectors
Improving neural networks by preventing co-adaptation of feature detectors 是Hinton在2012年6月份发表的,从这篇文章 ...
- LogisticRegression in MLLib
例子 iris数据训练Logistic模型.特征petal width和petal height,分类目标有三类. import org.apache.spark.mllib.classificati ...
- 【转】JS浮点数运算Bug的解决办法
37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一 ...
- JSOI2010 缓存交换
题目链接:戳我 考虑一个贪心--就是每次我们都选择队列里面之后最晚加入的元素弹出. 维护一个nxt数组就行了. 特判一下之后不会再加入的元素. 代码如下: #include<iostream&g ...
- svn 设置 excel 比对工具为 SPREADSHEETCOMPARE.EXE
http://blog.csdn.net/ccpat/article/details/50725774
- html-文件上传设置accept类型延时问题
今天在做文件上传时,采用了jQuery的upload插件,使用过程中发现了一个很有意思也很头疼的问题. 上传按钮,第一次点击时瞬间就可以打开文件选择框,之后再点击则需要等待恐怖的8s以上. 百度 ...
- iOS--各种bug详解
1.为什么传的参数都对,但是就是请求不下来数据. 答:检查下传的字符串中,是不是有多的空格. 例如: 错误:{"startIndex":"1","en ...
- Webstorm使用教程详解
Webstorm使用教程详解 Webstorm垂直分栏.左右分栏 Webstorm 主题.背景.颜色等设置的导入导出 使用WebStorm开发web前端 网页中文乱码问题的解决方案 Webstor ...
- python使用(四)
1.file_os_option.py2.file_option.py3.configfile_option.py4.logger_option.py 1.file_os_option.py # co ...
- web工程迁移---jboss5迁移到jboss6
这几天在做web工程的迁移,从jboss 5迁移到jboss 6.3. 在做迁移的过程中遇到了一些问题,在这里记录一下. 首先来看一下jboss5和jboss6.3的区别: 上面两幅 ...