首页 > 编程知识 正文

适配器模式java(springbean的作用域)

时间:2023-05-06 19:31:04 阅读:64450 作者:2738

本章主要介绍自动装配的几种方式,介绍前章依赖注入的方式和装配属性:

3359 blog.csdn.net/QQ _ 34598667/article/details/83308071

自动装配自动装配的一些方法Spring容器可以具有自动装配相互协作的 bean 之间的关系,而不使用constructor-arg和property元素,从而创建大型基于Spring的APP应用程序

使用bean元素的autowire属性指定bean定义的自动装配模式。

本节介绍了一些autowire值,这些值表示自动装配的几种方法

案例准备:基于上一个案例的实体类Person和Man

o缺省设置,无自动装配

我不举例子

byName :按属性名称计算将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接。

按如下方式定义applicationContext.xml文件:

! -- setter注入--bean id=' person ' class=' com.oak.entity.person ' property name=' age ' value=' 18 '/propertyname --byName是根据属性名称自动组装的--bean id=' man ' class=' com.oak.entity.man ' auto wire=' by name '//

@ testpublicvoidtest 05 ((application contextctx=newclasspathxmlapplication context.XML ); person person=CTX.get bean (' person ',Person.class ); system.out.println(Person ); manman=CTX.getbean('man ',Man.class ); system.out.println(man; }要显示控制台输出:

Person [name=二蛋,age=18]Man [person=Person [name=二蛋,age=18]]组装成功

Man属性person会自动检测id/name为person的bean,如果没有定义为person的bean,则程序集将失败。 例如,在xml中将bean为person的名称更改为person1。

! -- setter注入--bean id=' person1' class=' com.oak.entity.person ' property name=' age ' value=' 18 '/propertyname --byName是根据属性名称自动组装的--bean id=' man ' class=' com.oak.entity.man ' auto wire=' by name '//

Person [name=双蛋,age=18]Man [person=null]自动组装失败

byType :类型匹配配置文件中由属性数据类型自动装配的准确bean名称。

直接修改轮廓的组件类型为byType

! --byType根据属性名称自动组装--bean id=' man ' class=' com.oak.entity.man ' auto wire=' by type '/bean其他不做更改

控制台的结果是:

即使找不到与Person [name=二蛋,age=18]Man [person=Person [name=二蛋,age=18]]属性名称相同的bean,也可以进行组装。 因为它会根据属性类型进行搜索。

但是,如果有多个具有相同属性的bean,则会报告异常。 例如,将xml文件修改为:

! -- setter注入--bean id=' person1' class=' com.oak.entity.person ' property name=' age ' value=' 18 '/propertyname -- setter注入--bean id=' person2' class=' com.oak.entity.person ' property name=' age ' value=' 19 property name beanbeanid=' man ' class=' com.oak.entity.man ' auto wire=' by type '/bean继续测试test05方法,Junit异常

与constructor:bytype一样,在应用于构造函数并测试此方法时,请记住实体类必须具有bean参数类型的构造函数

公共人(个人个人) {super ); this.person=person; 修改xml配置文件

! -- setter注入--bean id=' person1' class=' com.oak.entity.person ' property name=' age ' value=' 18 '/property ne

Person [name=二蛋,age=18]Man [person=Person [name=二蛋,age=18]] constructor自动组装具有与byType自动组装相同的局限性。 如果发现多个Bean与对构造函数的参与相匹配,则Spring不会尝试推测哪个Bean适合自动程序集,并且程序集将失败。 此外,如果类具有多个构造函数,并且它们都满足自动程序集的条件,则Spring不会尝试推测哪个构造函数更合适。

autodetect Spring首先在构造器中尝试使用自动装配进行连接,如果未执行,则Spring将在byType中尝试自动装配。

如果希望自动装配bean,但无法确定使用哪种类型的自动装配,则可以将spring确定的autowire特性设置为autodetect

不要举例~

在下一章中,基于注释的自动组装(汇编扫描) :

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。