🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
```xml <bean id="studentDao" class="dao.impl.StudentDaoImpl"/> <bean id="studentService" class="service.impl.StudentServiceImpl"> <property name="studentDao" ref="studentDao"/> </bean> ``` 使用自动装配后`studentDao`属性的注入可以简化如下: ```xml <bean id="studentService" class="service.impl.StudentServiceImpl" autowire="byName"> <!-- <property name="studentDao" ref="studentDao"/> --> </bean> ``` 自动装配由`autowire`属性来控制,它的取值如下: | 值 | 作用 | | --- | --- | | no或default | 默认值。Spring默认不进行自动装配,必须显式指定依赖对象 | | byName | 根据属性名自动装配。Spring自动查找与属性名相同的id,如果找到,则自动注入,否则什么都不做 | | byType | 根据属性的类型自动装配。Spring自动查找与属性类型相同的Bean,如果刚好找到唯一的那个,则自动注入;如果找到多个与属性类型相同的Bean,则抛出异常;如果没找到,就什么也不做 | | constructor | 和byType类似,不过它针对构造方法。如果Spring 找到一个Bean和构造方法的参数类型相匹配,则通过构造注入该依赖对象;如果找不到,将抛出异常 | 可以为`<beans>`元素设置`default-autowire`属性,影响全局,但`<bean>`节点`autowire`的设置可以覆盖全局设置。 ```xml <beans .......default-autowire="byName"> !--省略其他代码--> </beans> ``` 自动装配使得配置文件可以非常简洁,但同时也造成组件之间的依赖关系不明确,容易引发一些潜在的错误,在实际项目中要谨慎使用。