利用spring注解定义服务信息
来源:互联网 发布:python exec函数 编辑:程序博客网 时间:2024/05/23 01:21
项目中所有的服务都是通过spring的bean进行加载,第一个版本使用xml自定义bean,并以bean的id为服务名,随着项目服务的变多,导致配置的xml文件越来越多,最后决定使用注释进行服务的定义,定义服务时还需要定义一些服务的基本信息,所以没有直接使用spring 的bean注解。
1)自定注解AppServer。代码如下,服务定义包括服务名,服务类型,是否需要控制事务(服务需要在同一个事务里处理完毕)
@Retention(RetentionPolicy.RUNTIME)@Componentpublic @interface AppServer {/** * 设置服务的名字 * @return */String serviceName();/** * 服务类型:原子服务,组合服务,批次服务 * @return */ServerType type() default ServerType.ATOMIC;/** * 事务 * @return */boolean transaction() default false;}
@Component 参考spring 的注解说明
2)spring是加载bean时。重写spring加载的bean的ID的名称
public class BeanNameGenerator extends AnnotationBeanNameGenerator{protected String determineBeanNameFromAnnotation(AnnotatedBeanDefinition annotatedDef) {String beanName = super.determineBeanNameFromAnnotation(annotatedDef);//没有查找到beanName时if (beanName == null) {AnnotationMetadata amd = annotatedDef.getMetadata();Set<String> types = amd.getAnnotationTypes();for (String type : types) {Map<String, Object> attributes = amd.getAnnotationAttributes(type);if (type.equals(AppServer.class.getName())) {String value = (String) attributes.get("serviceName");if (StringUtils.hasLength(value)) {if (beanName != null && !value.equals(beanName)) {throw new IllegalStateException("Stereotype annotations suggest inconsistent " +"component names: '" + beanName + "' versus '" + value + "'");}beanName = value;}}}}return beanName;}}定义spring扫注解的xml配置
<context:component-scan base-package="com.dld" name-generator="com.dld.platform.service.annotation.extend.BeanNameGenerator"/>
此时spring加载的bean的ID就是自定义的服务名.
0 0
- 利用spring注解定义服务信息
- Spring注解实现Bean定义
- Spring注解实现Bean定义
- Spring注解实现Bean定义
- spring利用注解进行注入
- 利用注解配置Spring容器
- 使用Spring注解完成Bean的定义
- Spring中通过注解定义定时任务
- 使用Spring注解完成Bean的定义
- Spring AOP定义以及注解形式实现
- 关于spring使用注解定义组件
- 114----spring mvc注解类信息
- Spring 如何读取 Bean 的注解信息
- spring注解调用task定时器服务
- Spring+cxf发布webservice服务--注解方式
- 利用注解实现spring基本配置详解
- 利用spring AOP注解实现日志管理
- 利用Spring AOP处理自定义注解
- 别找借口焦虑了!你不是老了,只是野心不够大!
- 三 v4l2文档之——register and open
- 开源电子海图和webGIS
- Ubuntu下hadoop的配置
- 删除指定文件夹下小于指定大小的全部文件
- 利用spring注解定义服务信息
- The request sent by the client was syntactically incorrect.
- linux-3.0.1下ok6410的led字符设备驱动
- 勾引蜘蛛去自己的网站提升PR之交叉连接
- iOS开发中的应用标识
- 大型网站系统架构的演化
- Api指南--Loaders介绍
- iptables里面的dport和sport
- 勾引蜘蛛去自己的网站提升PR之交叉连接