1. 注解定义Bean
@Component("xxDao")
等效于再xml文件配置 <bean id="xxDao" class="com.jason.too.anno.XxDao"/>
@Repository:对DAO实现类进行注解
@Service:对Service实现类进行注解
@Controller:对Controller实现类进行注解
@Component:以上三种注解的替代
2. 扫描注解定义的Bean
spring提供context命名空间,提供通过扫描类包应用注解定义Bean的方式:
<context:component-scan bean-package="com.jason.too.anno"/>
3. 自动装配Bean
1. 使用@Autowired进行自动注入
@Service // 将LogonService标注为Bean public class LogonService { @Autowried private UserDao userDao; @Autowired private LogDao logDao; ... ... } |
2. @Autowired的required属性
如果容器中没有一个标注变量匹配的Bean,Spring启动时将报NoSuchBeanDdefinitionException一场。如果希望Spring即使找不到标注的Bean也不抛出异常,则使用@Autowired(required=false)进行标注。
3. 使用Qualifier指定注入Bean的名称。
@Service // 将LogonService标注为Bean public class LogonService { @Autowried @Qualifier("userDao") private UserDao userDao; @Autowired @Qualifier("logDao") private LogDao logDao; ... ... } |
5. 对集合类进行标注
如果对类中集合类的变量或方法入参进行@Autowired标注,则Spring会将容器中类型匹配的所有Bean都注入进来。
6. 延迟依赖注入
使用@Lazy进行延迟依赖注入,需要同时标注Bean和属性。