多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
spring容器能自动装配bean的依赖关系.自动装配的优点如下: * 显著减少指定属性和构造参数的需要 * 随着对象的变化自动更新配置,例如,需要在一个类中添加依赖,这个依赖可以自动满足而不需要修改配置项 基于xml的配置,使用元素`<bean>`的属性`autowire`,自动装配有4中模式可供选择,如下: | 模式 | 说明 | | --- | --- | | no | 默认不开启自动状态 | | byName | 按属性名称自动装配,spring会寻找set属性的方法 | | byType | 按属性类型自动状态,如果容器中有属性的 | |constructor|类似byType,但是适用于构造参数,如果没有指定bean作为参数的构造方法,会引起严重错误| ## Limitations and disadvantages of autowiring 自动装配的一些限制和缺点: * `property` 和 `constructor-arg`属性的设置会覆盖自动装配.不能对基本数据类型和`String,Classes`自动装配,这在设计上就是限制的 * 自动装配没有精确装配准确,spring管理的对象之间的依赖关系不再明确记录 * 从spring容器生成文档的工具,装配信息不再有效 * spring管理的bean可能会有多个都满足自动装配的属性或构造参数,对于集合未必会出错,但是对于单一的值,就会造成混淆,导致出错, ## Excluding a bean from autowiring 你可以排除bean的自动装配,设置元素`<bean/>`的属性`autowire-candidate`为`false`,自动装配的机制对此bean无效(包括注解[@Autowired](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-autowired-annotation])) >`autowire-candidate`属性只对byType的自动装配起作用,对于byName不起作用,也就是说,如果name匹配还是会自动装配 > 你也可以限制自动装配基于名字的正则匹配,顶级元素`<beans/>`的属性`default-autowire-candidates`可以设置一个或多个正则模式,例如,对于name以Repository结尾的bean自动装配,则取值为 *Repository.多个模式,用逗号隔开.对于bean的属性`autowire-candidate`总是优先的,匹配模式对这些bean不起作用. 这项技术,对于不想把bean自动装配到另一个bean是非常有用的.这并不意味bean本身不能使用自动装配,只是本身不会自动装配到其他bean中去.