我们执行的效果是:
1sdfs2008/03/06
2一旦注入就会打印.我是bean1的setInt方法
3bean2.bean3.id=10
4bean2.bean3.name=这个在公共中有定义值.如果bean3中再定义.则以bean3覆盖原来的配置内容
5bean2.bean3.password=1235
6bean2.bean4.id=10
7bean2.bean4.name=tom
8bean2.bean5.age=10
第一行是编辑器中的打印2一旦注入就会打印.我是bean1的setInt方法
3bean2.bean3.id=10
4bean2.bean3.name=这个在公共中有定义值.如果bean3中再定义.则以bean3覆盖原来的配置内容
5bean2.bean3.password=1235
6bean2.bean4.id=10
7bean2.bean4.name=tom
8bean2.bean5.age=10
第二行是bean1中intsetter中的打印
第三行开始是配置文件中的注入
xml配置文件中配置.
可以发现,spring会将配置文件中的东西一起全部注入.而不管这个是否有被用到.
testInjection2()方法根本没有用到Bean1的settintvalue方法和时间编辑器.
1<?xml version="1.0" encoding="UTF-8"?>
2<beans
3 xmlns="http://www.springframework.org/schema/beans"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
6default-lazy-init="false">
其中 default-lazy-init="false" 是默认就为false的. 假如我们设置为true.2<beans
3 xmlns="http://www.springframework.org/schema/beans"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
6default-lazy-init="false">
则重新运行testInjection2()方法效果如下:
1bean2.bean3.id=10
2bean2.bean3.name=这个在公共中有定义值.如果bean3中再定义.则以bean3覆盖原来的配置内容
3bean2.bean3.password=1235
4bean2.bean4.id=10
5bean2.bean4.name=tom
6bean2.bean5.age=10
结果,与其无关的不会打印.2bean2.bean3.name=这个在公共中有定义值.如果bean3中再定义.则以bean3覆盖原来的配置内容
3bean2.bean3.password=1235
4bean2.bean4.id=10
5bean2.bean4.name=tom
6bean2.bean5.age=10
说明只初始了与testInjection2()方法相关的东西.
结论: spring默认将配置文件中描述的所有依赖关系注入.(延迟默认为false)
注意:配置文件中设置lazy为true.只对该配置文件起作用.对其他配置文件没有效果