Java联盟

Java框架spring(二)—bean的属性注入

2017-12-07  本文已影响0人  Java联盟

好的各位小伙伴

今天我们继续来搞 spring 

今天我们来分享的就是

常见的 POJO 类属性的注入

我们先来创建一个 user 类 ,在 user 类中定义多种类型的属性以及 get()和 set() 方法。

我们可以看到在 user 类中的属性有多种类型,String、int、list... 现在我们来写配置文件,向这些属性中插入数据。

写一个 JUnit 测试类来测试一下

这样就把我们在配置文件中设置的属性注入到我们的类中了,那么这个小知识点应该没什么问题了吧!

bean 中的 scope 属性

在 bean 中有的 scope 属性,表示 bean 对象的作用域  scope = "singleton/prototype"


singleton  仅初始化一次,创建一个实例,例:  A a = new A();

prototype 每一次对bean的访问都会重新创建一个新的实例。例:A a = new A(); A b = new A();

我们来测试一下!

首先把 bean 的属性设置为 scope="singleton" 

看一下我们的测试结果


我们现在修改一下属性的配置 scope="prototype"

看一下我们的测试结果

bean 的延迟加载

在 bean 标签里面 写入 lazy-init = "false" /lazy-init="true" (默认是false)延迟的意思就是你要用的时候我在给你实例化!

我们来测试一下!

我们的测试思路是在配置文件的时候故意写错,如果不是延迟加载就会直接报错并且不会输出语句,是延迟加载的话就会先输出在报错。好的我们开始

设置 lazy-init = "false" 

我们是没有这个文件的,所以这个路径是错的!

设置 lazy-init="true" 

注:在beans的头文件里面 写入  default-lazy-init="true" 代表整个配置文件的对象都是延迟加载呦!

自动装配


spring 还可以自动的向 bean 中注入依赖  --自动装配 (autowire)

我们来建一个例子

其实这里面的代码和我们昨天的一样就是改了一下名字,好吧!我们还是来粘一下代码

主要的就是这三个!

现在来设置配置文件

自动装配主要有两种方式

byName 依赖的 bean 名称需要与类中引用的名称一致  ,就会匹配依赖关系,我们在类中的引用的名称是 userAutowireDao 所以就会去匹配我们的 userAutowireDao 方法

那么输出的结果就是通过jdbc验证

运行一下

 byType 通过定义的依赖bean的类型来进行匹配

我们这样配置,运行时会报错

因为我们下面的两个实现方法的类型是一样的,这个时候就引入了另一个属性

这个属性的意思是:放弃自动匹配的候选者资格,这样在程序运行的时候我们就会跳过这个选项,直接去找到下面的other方法来实现

总结:建议不要在配置文件里面用自动装配,虽然可以减少配置文件,但是不利于维护

好了!

那么今天的分享就到这里了

再见了

上一篇 下一篇

猜你喜欢

热点阅读