您的位置:首页 > 编程语言 > Java开发

Spring中Bean的注册与注入——注解方式

2016-12-19 15:45 441 查看
<beans>
// 注解Autowired的注解处理器
<bean class="....AutowiredAnnotationBeanPostProcessor" />
// 注解Resouce、PostConstruct、PreDestroy的注解处理器,符合JSR-250标准的注解
<bean class="....CommonAnnotationBeanPostProcessor" />
// 注解PersistenceUnit、PersistenceContext的注解处理器
<bean class="....PersistenceAnnotationBeanPostProcessor" />
// 注解Required的注解处理器
<bean class="....RequiredAnnotationBeanPostProcessor" />

// 此句可直接代替上述四个配置
<context:annotation-config />

// 使用上述注解的类必须先被注册为bean,开启注解扫描,上述所有功能用如下一句话完成
// 可扫描类前的注解Component、Repository、Service、Controller,四个注解可将其标注的类注册为bean
<context:component-scan base-package="..*" />

// 完成aop的注解Aspect、Pointcut、Before、After、Around的注解处理器,默认false使用jdk动态代理,true使用cglib
<aop:aspectj-autoproxy proxy-target-class="true" />
</beans>

// 注解Component标注任何类,其扩展Repository标注dao、Service标注服务、Controller标注控制器,参数为bean的id
// 注解Scope指定bean的作用域,默认singleton,如果dao、service、controller全部使用默认单例,在设计时就必须规避并发问题
// 同一个实例多线程会共享成员属性,局部属性为线程独有,由此在设计dao、service、controller时,用户自己定的变量必须为局部
@Repository("xxDao")
@Scope("singleton")
public class XxDaoImpl implements XxDao {
..
}

@Service("yyServiceRpc")
public Class YyServiceRpc {
// 外部服务
public YyService yyService;

..
}

@Service("xxService")
public class XxServiceImpl implements XxService {
// 默认按属性名寻找匹配的bean,找不到按属性类型寻找匹配的bean
// 可通过参数使其按指定的名字寻找匹配的bean,找不到报错,不会再按属性类型寻找匹配
@Resource(name = "xxDao")
XxDao xxDao;

// 注解Autowired按属性类型寻找匹配的bean,参数required设置允许找不到bean,一般仅在测试用
// 若匹配类型的bean有多个会抛异常,注解Qualifier指定按给定的名字寻找匹配的bean
@Autowired(required = false)
@Qualifier("yyServiceRpc")
YyServiceRpc yyServiceRpc;

..
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: