spring使用过滤器自定义扫描,bean名称的首字母大小写问题。

问题描述

使用过滤器自定义扫描<context:component-scanbase-package="org.example">spring开发手册中这样写:3.12.4.自动检测组件的命名当一个组件在某个扫描过程中被自动检测到时,会根据那个扫描器的BeanNameGenerator策略生成它的bean名称。默认情况下,任何包含name值的Spring“典型”注解(@Component、@Repository、@Service和@Controller)会把那个名字提供给相关的bean定义。如果这个注解不包含name值或是其他检测到的组件(比如被自定义过滤器发现的),默认bean名称生成器会返回小写开头的非限定(non-qualified)类名。例如,如果发现了下面这两个组件,它们的名字会是'myMovieLister'和'movieFinderImpl':@Service("myMovieLister")publicclassSimpleMovieLister{//...}@RepositorypublicclassMovieFinderImplimplementsMovieFinder{//...}可是我的却是大写开头,请问这是为什么呢?

解决方案

解决方案二:
这么专业的话你看着不吃力?在Java中类名首字母肯定是大写,没有疑问的。在spring中,name的话很多是起到别名的作用<beanid="dmzbean"class="org.olat.commons.dispatcher.SessionDispatcher"><propertyname="chiefControllerCreator"><beanclass="org.olat.core.commons.chiefcontrollers.BaseChiefControllerCreator"><propertyname="contentControllerCreator"><beanclass="org.eyan.meeting.main.EyanContentControllerCreator"/></property></bean></property>

比如这里就可以看成是contentControllerCreator是org.eyan.meeting.main.EyanContentControllerCreator的别名,chiefControllerCreator是org.olat.core.commons.chiefcontrollers.BaseChiefControllerCreator的别名。在正式的项目里面很大部分都是利用的接口引用,在spring里这样写的话可以实现。我的理解是太书面的话很难理解透彻,自己多动手写一写,试一试,实在不理解的地方先学会用法,写点心得记下来怎么用的,可能隔段时间自己就能顿悟为什么这么写了。
解决方案三:
运行时spring自动建立的类的别名是小写开头,而不是你自己写的类代码吧???这如果小写开头不符合Java代码规范啊……
解决方案四:
我的意思是我配置spring环境的到bean名称是小写开头的类名,而不是他说的“默认bean名称生成器会返回小写开头的非限定(non-qualified)类名”。这是为什么?用注解写的:@Service
解决方案五:
终于明白了,如果连着两个大写的字母开头,则扫描进来的bean就是大写开头的;如果大写开头,后面跟小写,则扫描进来的是小写开头的原来如此。。。
解决方案六:
这也行。。。

时间: 2024-10-29 22:36:41

spring使用过滤器自定义扫描,bean名称的首字母大小写问题。的相关文章

用自定义函数获取汉字的首字母

用自定义函数获取汉字的首字母 <SCRIPT LANGUAGE=vbscript> <!-- '''''''''''''''''''''' '提供者:小白 '联系方法: 'E-mail:xiaobai@17560.net '欢迎大家测试 '针对chenjf网友发现的问题 '小白做了一处修改 '另外,对刘伟强网友的回复是:本函数目前只能获取..?呵呵 '如有不正确的地方,请提出来或是帮忙完善 '谢谢 '''''''''''''''''''''''''''''' function getpy

用自定义函数获取汉字的首字母(希望进精华区)

函数|汉字|精华 <SCRIPT LANGUAGE=vbscript><!--'''''''''''''''''''''''提供者:小白'联系方法:'E-mail:xiaobai@17560.net''''''''''''''''''''''''''''''function getpychar(char)tmp=65536+asc(char)if(tmp>=45217 and tmp<=45252) then getpychar= "A"elseif(tm

Spring实战2:装配bean—依赖注入的本质

主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须相互了解.能够相互协作完成工作.例如,在一个在线购物系统中,订单管理组件需要与产品管理组件以及信用卡认证组件协作:这些组件还需要跟数据库组件协作从而进行数据库读写操作. 在Spring应用中,对象无需自己负责查找或者创建与其关联的其他对象,由容器负责将创建各个对象,并创建各个对象之间的依赖关系.例如

spring启动component-scan类扫描加载过程---源码分析

最近因为写书的事情,一段时间没有写博客了,有朋友最近问到了spring加载类的过程,尤其是基于annotation注解的加载过程,有些时候如果由于某些系统部署的问题,加载不到,很是不解!就针对这个问题,我这篇博客说说spring启动过程,用源码来说明,这部分内容也会在书中出现,只是表达方式会稍微有些区别,我将使用spring 3.0的版本来说明(虽然版本有所区别,但是变化并不是特别大),另外,这里会从WEB中使用spring开始,中途会穿插自己通过new ClassPathXmlApplicat

《Spring攻略(第2版)》——1.2 配置Spring IoC容器中的Bean

1.2 配置Spring IoC容器中的Bean 1.2.1 问题 Spring提供了一个强大的IoC容器来管理组成应用的bean.为了利用容器服务,你必须配置运行于Spring IoC容器中的Bean. 1.2.2 解决方案 你可以通过XML文件.属性文件.注释甚至API来配置Spring IoC容器中的Bean. Spring允许你在一个或者多个bean配置文件中配置bean.对于简单的应用程序,可以在单个配置文件中集中配置bean.但是对于有许多bean的大型应用,你应该根据其功能(例如控

Spring实战3:装配bean的进阶知识

主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expression Language 在装配bean-依赖注入的本质一文中,我们探讨了Spring的三种管理bean的方式:自动装配.基于JavaConfig.基于XML文件.这篇文字将探讨一些Spring中关于bean的管理的高级知识,这些技能你可能不会每天都用,但是非常重要. 3.1 Environments

spring中如何获取注入bean里方法上的注解?

问题描述 spring中如何获取注入bean里方法上的注解? 有这样一个需求,在spring中,想用反射获取一个注入bean中方法的注解 一般情况下这样的操作就行了: Method method = bean.getClass().getMethod(...); Annotation[] annotations = method.getAnnotations(); 这样就能获取注解了. 但在spring中,这种方法是获取不到annotation的,原因是这里的bean其实是一个代理类.那么问题来

Spring在代码中获取bean的方法小结_java

一.通过Spring提供的ContextLoader WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); wac.getBean(beanID); 这种方式不依赖于servlet,不需要注入的方式.但是需要注意一点,在服务器启动时,Spring容器初始化时,不能通过这种方法获取Spring容器 二.实现接口ApplicationContextAware 定义工具类 public class Sp

阿里云如何修改自定义镜像的名称和描述

阿里云如何修改自定义镜像的名称和描述 您可以随时修改自定义镜像的名称和描述信息. 操作如下: 登录 云服务器管理控制台. 单击左侧导航中的 镜像.可以看到镜像列表. 选择页面顶部的地域. 选中需要编辑的镜像.镜像类型必须是 自定义镜像. 修改名称:把鼠标移动到该自定义镜像的名称上,会出现一个可以修改的小笔图标.单击该图标修改镜像名称. 修改描述:单击 编辑描述. 单击 确定. 自定义镜像的名称和描述信息修改成功.