知识大全 Spring的自动装配
Posted 属性
篇首语:厌伴老儒烹瓠叶,强随举子踏槐花。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring的自动装配相关的知识,希望对你有一定的参考价值。
Spring的自动装配 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
采用构造函数注入 以及setter方法注入都需要写大量的XML配置文件 这时可以采用另一种方式 就是自动装 由Spring来给我们自动装配我们的Bean
Spring提供了四种自动装配类型
:ByName 采用这种方式时给属性自动注入值时 会根据Bean里的setXXX中的XXX去搜寻有没有id=XXX的Bean 有的话 将其自动注入 没有的话 就表示setXXX里要装入属性没有装配值
:ByType 采用这种方式给属性自动注入值时 会根据Bean里的setXXX中的参数类型来搜寻配置文件中的Bean定义 如果发现了一个 就自动将其注入 否则如果有 个这个属性没有被装配 如果有多个 则会抛出异常
:constructor 这种方式的注入与ByType其实没什么区别 无非是将ByType移入到了构造函数中 这种方式下 构造函数是自动注入的 在构造对象时 会自动根据构造函数的参数类型搜寻Bean 如果有一个合适的 则成功 一个没有 则失败 有多个 则会抛出异常
:autodetect 自动检测方式 会采用如下流程 先按照constructor方式 再按照ByType方式
例子源代码如下
例子一个Java工程师从一个网站上买东本
一个普通的JavaBean
[java]
interface Engineer
Object buyApple();
public class JavaEngineer implements Engineer
private String name;
private Website ws;
public JavaEngineer(String name)
this name=name;
public void setWebsite(Website ws)
this ws=ws;
@Override
public String toString()
// TODO Auto generated method stub
return super toString();
public Object buyApple()
System out print( 工程师 +name);
return ws buyApple();
interface Engineer
Object buyApple();
public class JavaEngineer implements Engineer
private String name;
private Website ws;
public JavaEngineer(String name)
this name=name;
public void setWebsite(Website ws)
this ws=ws;
@Override
public String toString()
// TODO Auto generated method stub
return super toString();
public Object buyApple()
System out print( 工程师 +name);
return ws buyApple();
这个网站假设是淘宝网
[java]
interface Website
Object buyApple();
public class TaobaoWebsite implements Website
public TaobaoWebsite()
public Object buyApple()
System out println( 购买了一个苹果 );
return new Object();
interface Website
Object buyApple();
public class TaobaoWebsite implements Website
public TaobaoWebsite()
public Object buyApple()
System out println( 购买了一个苹果 );
return new Object();
则采用自动装配的ByName方式 的配置文件如下
[java]
<?xml version= encoding= UTF ?>
<beans
xmlns= /schema/beans
xmlns:xsi= / /XMLSchema instance
xmlns:p= /schema/p
xsi:schemaLocation= /schema/beans /schema/beans/spring beans xsd >
<! 这个名字要和setXXX中的XXX保持一致 不区分大小写 >
<bean id= website class= pp TaobaoWebsite />
<bean id= engineer class= pp JavaEngineer autowire= byName >
<constructor arg value= ppTest />
<! 这里有一个属性采用的是自动byName的方式注入的 >
</bean>
</beans>
<?xml version= encoding= UTF ?>
<beans
xmlns= /schema/beans
xmlns:xsi= / /XMLSchema instance
xmlns:p= /schema/p
xsi:schemaLocation= /schema/beans /schema/beans/spring beans xsd >
<! 这个名字要和setXXX中的XXX保持一致 不区分大小写 >
<bean id= website class= pp TaobaoWebsite />
<bean id= engineer class= pp JavaEngineer autowire= byName >
<constructor arg value= ppTest />
<! 这里有一个属性采用的是自动byName的方式注入的 >
</bean>
</beans>打印结果如下
[java]
工程师ppTest购买了一个苹果
工程师ppTest购买了一个苹果
有了第一个结果后 第二个结果也就很简单了
ByType的测试
修改配置文件如下
[]
<! 这个名字 不再需要和setXXX中的XXX保持一致 >
<bean id= web class= pp TaobaoWebsite />
<bean id= engineer class= pp JavaEngineer autowire= byType >
<constructor arg value= ppTest />
<! 这里有一个属性采用的是自动byName的方式注入的 >
</bean>
<! 这个名字 不再需要和setXXX中的XXX保持一致 >
<bean id= web class= pp TaobaoWebsite />
<bean id= engineer class= pp JavaEngineer autowire= byType >
<constructor arg value= ppTest />
<! 这里有一个属性采用的是自动byName的方式注入的 >
</bean>其他的地方可以不用修改
Constructor自动装配 为了测试 给JavaEngineer加入一个构造函数 如下方式
[java]
public JavaEngineer(Website ws)
this ws=ws;
this name= ppTest ;
public JavaEngineer(Website ws)
this ws=ws;
this name= ppTest ;
再修改配置文件如下
[]
<bean id= web class= pp TaobaoWebsite />
<bean id= engineer class= pp JavaEngineer autowire= constructor >
<! <constructor arg value= ppTest /> >
<! 这里有一个属性采用的是自动byName的方式注入的 >
</bean>
<bean id= web class= pp TaobaoWebsite />
<bean id= engineer class= pp JavaEngineer autowire= constructor >
<! <constructor arg value= ppTest /> >
<! 这里有一个属性采用的是自动byName的方式注入的 >
</bean>结果是一样的
cha138/Article/program/Java/ky/201311/28710相关参考
Spring自动代理机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们一直使用ProxyF
Spring与自动调度任务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近把以前设想做搜索引
spring的aop机制提供两类方式实现类代理一种是单个代理一种是自动代理 单个代理通过ProxyFactoryBean来实现自动代理通过BeanNameAutoProxyCreator或者De
<aop:config> <!<aop:advisorid=userManagerTxad
知识大全 Spring Autowire(自动装载)的一次实践
SpringAutowire(自动装载)的一次实践 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Spring Autowire(自动装载)的一次实践[2]
SpringAutowire(自动装载)的一次实践[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 Spring Autowire(自动装载)的一次实践[1]
SpringAutowire(自动装载)的一次实践[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 Spring3 Mybatis3 freemarker 自动生成对应表
Spring3Mybatis3freemarker自动生成对应表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
关于膜的合成,曾提出两个模型:一个自装配模型(spontaneousself-assembly),即膜是理由蛋白、脂和糖自动组装的,但与体外实验结果不符。因为用纯化的脂和蛋白在体外装配时总是形成脂质体
①IF装配的单体是纤维状蛋白(MF,MT的单体呈球形)。 ②反向平行的四聚体导致IF不具有极性。 ③IF在体外装配时不需要核苷酸或结合蛋白的辅助,在体内装配后,细胞中几乎不存在IF单体(但IF的存