好的各位小伙伴
今天我们继续来搞 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方法来实现
总结:建议不要在配置文件里面用自动装配,虽然可以减少配置文件,但是不利于维护
好了!
那么今天的分享就到这里了
再见了
网友评论