默认情况下,容器会在初始化的时候就积极创建所有的实例,并且默认都以单例模式创建。
还可以指定实例不在容器初始化的时候创建单例实例,而在首次请求时创建实例。这种创建实例的方式可理解为懒加载,即何时使用何时加载,与懒汉式单例方法名称中的懒相同。
懒初始化实例需要在实例上使用lazy-init属性,并指定值为true:
<bean id="lazy" class="com.something.ExpensiveToCreateBean" lazy-init="true"/>
还可以在beans标签中添加default-lazy-init属性,以指定其中的所有实例是否为懒加载:true为懒加载,false为非懒加载,默认为false。
<beans default-lazy-init="true"></beans>
Spring可以自动的查找依赖,然后自动的将内容进行注入。自动装配可减少属性的指定和构造参数的必要。自动装配也可根据对象的改变进行动态的自动的修改。
<bean id="createA" class="bean.A" autowire="byName"></bean>
自动装配需要借助setter方法,故类中要存在属性的setter方法。
可在bean中使用autowire属性进行装配指定,其中包含四种模式进行装配:
模式 | 说明 |
---|---|
no |
(默认)无自动装配。Bean引用必须由ref 元素定义。对于较大的部署,建议不要更改默认设置,因为明确指定协作者可以提供更好的控制和清晰度。在某种程度上,它记录了系统的结构。 |
byName |
|
byType |
如果容器中恰好存在一个属性类型的bean,则使该属性自动连接。如果存在多个错误,则会引发致命异常,这表明您可能无法byType 对该bean 使用自动装配。如果没有匹配的bean,则什么都不会发生(未设置该属性)。 |
constructor |
类似于byType 但适用于构造函数参数。如果容器中不存在构造函数参数类型的一个bean,则将引发致命错误。 |
项目全部采用自动装配可在beans标签中添加:default-autowire="byName"。
使用自动装配时,所配置的property和constructor-arg将被覆盖
在自动装配时,可排除一个不进行注入的实例。要在autowire-candidate属性中设置bean为false,则此类不作为注入使用项进行注入到其他实例中。
排除自动装配的autowire-candidate属性只作用与:根据属性装配,根据名称无效果。
韶光淑气_Spring_5.0 自动注入+懒加载_2020年4月10日13:48:45
原文:https://www.cnblogs.com/agoodjavaboy/p/12673016.html