💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
```xml <bean id="userDao" class="learn.springautowire.dao.impl.UserDaoImpl"/> <!-- 不使用自动装配对userDao属性的注入 --> <bean id="userService" class="learn.springautowire.service.impl.UserServiceImpl"> <property name="userDao" ref="userDao"/> </bean> <!-- 使用自动装配后可以省略 <property name="userDao" ref="userDao"/> 也可以对userDao属性注入 --> <bean id="userService" class="learn.springautowire.service.impl.UserServiceImpl" autowire="byName"/> ``` 自动装配由`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> ``` 自动装配使得配置文件可以非常简洁,但同时也造成组件之间的依赖关系不明确,容易引发一些潜在的错误,在实际项目中要谨慎使用。