spring 自定义注解的注册与扫描
2014-11-16 21:24
260 查看
今天把request-proxy的类扫描方式改成了spring的ClassPathBeanDefinitionScanner,不仅速度提高了,而且代码根据简单了
先说下之前的思路自己写的扫描路径根据配置路径然后把类全部过滤一遍,自己写过滤还是很麻烦,看mybatis-spring,发现可以用
ClassPathBeanDefinitionScanner 简单的就可以完成路径扫描,类的加载
我们自己继承者这个类,然后执行一下啊就可以搞定注入,spring so easy
获取类名
这个地方spring 默认的是AnnotationBeanNameGenerator我们有用的是这个
这里的component 就是那个@Component 需要你在你自定义的注解上面注解这个如
这样spring 就可以获取你 名称了
spring默认是按照类型注入的,并且如果value是空,那么name就是类名,而不是我们习惯的第一个字母小写,这个需要注意下
2.类型过滤
这里过滤和我们xml的scan配置差不多
包含的和除外的,因为是我们是自定义注解,所以我们用到是addIncludeFilter
addIncludeFilter(new AnnotationTypeFilter(IRequest.class));
这样就把我们的过滤条件添加了
3.接口配置
因为spring 默认是不会注册接口的需要我们继承ClassPathBeanDefinitionScanner 然后后写isCandidateComponent
让其允许接口注册,如果你不是接口那么你也就不用这样玩耍了
-----------------------------------------------------------------------------------------------------------------------------
如果你是实体类注册的化,到这里基本上就OK了
-----------------------------------------------------------------------------------------------------------------------------
4.代理创建
创建代理也挺简单的,把代理的工厂注册下就可以了,但是注册的是class这里我们就需要getPropertyValues()这个方法吧我们的参数注入进去如:
这样spring 就会调用我们的工厂注入bean了,下面是我的beanFactory 其实也很简单
这样spring 就把我生成的代理类,注入到容器中了,我们就可以想平常操作对象一样,操作自己定义的类了.
题外话
说实话看源码果然是不一样的,之前不懂spring如何玩耍的时候,慢慢的看看,spring设计还是感觉好神奇,哈哈
ps2.0
ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS 这个spring默认的扫描各类配置,; \t\n
resource.isReadable() 发现他们都喜欢做安全校验,果然是大厂家,这些一起基本上都不会在乎
先说下之前的思路自己写的扫描路径根据配置路径然后把类全部过滤一遍,自己写过滤还是很麻烦,看mybatis-spring,发现可以用
ClassPathBeanDefinitionScanner 简单的就可以完成路径扫描,类的加载
我们自己继承者这个类,然后执行一下啊就可以搞定注入,spring so easy
获取类名
这个地方spring 默认的是AnnotationBeanNameGenerator我们有用的是这个
这里的component 就是那个@Component 需要你在你自定义的注解上面注解这个如
这样spring 就可以获取你 名称了
spring默认是按照类型注入的,并且如果value是空,那么name就是类名,而不是我们习惯的第一个字母小写,这个需要注意下
2.类型过滤
这里过滤和我们xml的scan配置差不多
包含的和除外的,因为是我们是自定义注解,所以我们用到是addIncludeFilter
addIncludeFilter(new AnnotationTypeFilter(IRequest.class));
这样就把我们的过滤条件添加了
3.接口配置
因为spring 默认是不会注册接口的需要我们继承ClassPathBeanDefinitionScanner 然后后写isCandidateComponent
让其允许接口注册,如果你不是接口那么你也就不用这样玩耍了
-----------------------------------------------------------------------------------------------------------------------------
如果你是实体类注册的化,到这里基本上就OK了
-----------------------------------------------------------------------------------------------------------------------------
4.代理创建
创建代理也挺简单的,把代理的工厂注册下就可以了,但是注册的是class这里我们就需要getPropertyValues()这个方法吧我们的参数注入进去如:
这样spring 就会调用我们的工厂注入bean了,下面是我的beanFactory 其实也很简单
这样spring 就把我生成的代理类,注入到容器中了,我们就可以想平常操作对象一样,操作自己定义的类了.
题外话
说实话看源码果然是不一样的,之前不懂spring如何玩耍的时候,慢慢的看看,spring设计还是感觉好神奇,哈哈
ps2.0
ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS 这个spring默认的扫描各类配置,; \t\n
resource.isReadable() 发现他们都喜欢做安全校验,果然是大厂家,这些一起基本上都不会在乎
相关文章推荐
- Spring自定义注解扫描的实现
- spring扫描自定义注解并进行操作
- spring扫描自定义注解并进行操作
- 事件分发之扫描自定义注解实现观察者模式注册
- 在spring中使用自定义注解注册监听器
- dubbo--自定义注解spring扫描
- 在spring中使用自定义注解注册监听器的方法
- spring中“类扫描的注解”的使用
- spring 自定义注解
- 使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提
- spring注解扫描配置
- 利用Spring AOP处理自定义注解
- 利用Spring AOP自定义注解解决日志和签名校验
- Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
- Spring AOP + 自定义注解实现Session的验证
- spring 拦截器 spring自定义注解
- 自己试验在spring的环绕通知里获取目标对象的类名和目标方法的参数类名,用于根据自定义注解判断访问权限,有没有更好的办法,高手指点一下
- Spring自定义属性编辑器PropertyEditorSupport + 使用CustomEditorConfigurer注册属性编辑器
- 如何在自定义标签中获取spring通过@Service注解来的service
- Spring 自定义注解实现操作日志记录功能