Spring中的自动装配
src\dayday\Person.java
package dayday; /**
* Created by I am master on 2016/11/28.
*/
public class Person {
private String name;
private int age;
private City city;
private Car car;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public void setCity(City city){
this.city=city;
}
public void setCar(Car car){
this.car=car;
}
public void toprint(){
System.out.println("["+"name="+name+" age="+age+" car"+car+" city"+city+"]");
}
}
src\daydayCity.java
package dayday; /**
* Created by I am master on 2016/11/28.
*/
public class City {
private String livecity;
private String street;
public void setLivecity(String livecity) {
this.livecity=livecity;
}
public void setStreet(String street{
this.street=street;
}
public String getLivecity(){
return livecity;
}
public String getStreet(){
return street;
}
public String toString(){
return "["+"city="+livecity+" street"+street +"]";
}
}
src\dayday\Car.java
package dayday; /**
* Created by I am master on 2016/11/28.
*/
public class Car {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public String toString(){
return "["+"carname="+name+"]";
}
}
src\dayday\Main.java
package dayday; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
ApplicationContext ctx= new ClassPathXmlApplicationContext("beans.xml");
Person person1=ctx.getBean("person1",Person.class);
Person person2=ctx.getBean("person1",Person.class);
person1.toprint();
person2.toprint();
}
}
src\beans.xml<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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 name="car" class="dayday.Car" p:name="Audi"/>
<bean name="city" class="dayday.City" p:livecity="shaoxing" p:street="xinchang"/>
<!--通过byType进行装配-->
<bean name="person1" class="dayday.Person" p:name="dayday" p:age="18" autowire="byType"/>
<!--通过byName进行装配-->
<bean name="person2" class="dayday.Person" p:name="dayday" p:age="18" autowire="byName"/>
</beans> 运行结果
[name=dayday age=18 car[carname=Audi] city[city=shaoxing streetxinchang]]
[name=dayday age=18 car[carname=Audi] city[city=shaoxing streetxinchang]]
装配机制
byName根据bean的名字和当前bean的setter风格的属性名进行自动匹配,若有匹配的,则进行自动装配,若没有匹配的,则不装配
比如bean中有setXXX()的方法,且在配置文件中,bean中id="XXX"则可进行自动装配,id="XXX1"就不可以装配
byType根据bean的类型和当前bean的属性进行自动装配,若IOC容器中有一个及以上的类型匹配的bean,则将抛出异常
在实际开发中很少用自动装配,因为代码不够一目了然,而且存在很多局限性,如不能两种装配方式同时进行,如果选择了自动了装配,就不能手动配置...
Spring中的自动装配的更多相关文章
- Spring中类型自动装配--byType
在Spring中,“类型自动装配”的意思是如果一个bean的数据类型与其它bean属性的数据类型相同,将自动兼容装配它. 例如,一个“persion” bean 公开以“ability”类数据类型作为 ...
- Spring(六)之自动装配
一.自动装配模型 下面是自动连接模式,可以用来指示Spring容器使用自动连接进行依赖注入.您可以使用元素的autowire属性为bean定义指定autowire模式. 可以使用 byType 或者 ...
- Spring 由构造函数自动装配
Spring 由构造函数自动装配,这种模式与 byType 非常相似,但它应用于构造器参数. Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 ...
- 6、Spring教程之自动装配
自动装配说明 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean. Spring中bean有三种装配机制,分别是: 在xml中显式配置 ...
- spring第一课,beans配置(中)——自动装配
•Spring IOC 容器可以自动装配 Bean. 需要做的仅仅是在 <bean> 的 autowire 属性里指定自动装配的模式 •byType(根据类型自动装配): 若 IOC 容器 ...
- 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的属性具有相同类型 ...
随机推荐
- linux command
ubuntu start network:sudo service network-manager start
- 用margin还是padding
用margin还是用padding这个问题是每个学习CSS进阶时的必经之路. CSS边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时 ...
- VS2010 验证时出错。HRESULT = '8000000A'
验证时出错.HRESULT = '8000000A' 在VS2010中,当为Windows窗体应用程序添加一个安装项目后,如果项目生成时出现以下错误: 验证时发生错误.HRESULT = '80000 ...
- MVC5 Entity Framework学习之Entity Framework高级功能(转)
在之前的文章中,你已经学习了如何实现每个层次结构一个表继承.本节中你将学习使用Entity Framework Code First来开发ASP.NET web应用程序时可以利用的高级功能. 在本节中 ...
- Java—输入输出技术
在Java中,通过java.io包提供的类来表示流,基本的输入输出流为InputStream和OutputStream.从这两个基本的输入输出流派生出面向特定处理的流,如缓冲区读写流.文件读写流等. ...
- Linux内核分析课程总结
Linux内核分析课程总结 By 20135203齐岳 知识梳理 (思维导图地址http://mindmap.4ye.me/mkxM0cFh/1) 从start _ kernel构造一个新的Linux ...
- 定时器springMVC
- 作业调度框架 Quartz 学习笔记(三) -- Cron表达式 (转载)
前面两篇说的是简单的触发器(SimpleTrigger) , SimpleTrigger 只能处理简单的事件出发,如果想灵活的进行任务的触发,就要请出 CronTrigger 这个重要人物了. Cro ...
- web前端面试题
HTML+CSS 1.对WEB标准以及W3C的理解与认识 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户 ...
- 洛谷 1004 dp或最大费用流
思路: dp方法: 设dp[i][j][k][l]为两条没有交叉的路径分别走到(i,j)和(k,l)处最大价值. 则转移方程为 dp[i][j][k][l]=max(dp[i-1][j][k-1][l ...