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

sun_abc 2010-11-08 01:11:08
使用过滤器自定义扫描 <context:component-scan base-package="org.example">
spring开发手册中这样写:
3.12.4. 自动检测组件的命名

当一个组件在某个扫描过程中被自动检测到时,会根据那个扫描器的BeanNameGenerator 策略生成它的bean名称。默认情况下,任何包含name值的Spring“典型”注解 (@Component、@Repository、 @Service和@Controller) 会把那个名字提供给相关的bean定义。如果这个注解不包含name值或是其他检测到的组件 (比如被自定义过滤器发现的),默认bean名称生成器会返回小写开头的非限定(non-qualified)类名。 例如,如果发现了下面这两个组件,它们的名字会是'myMovieLister'和'movieFinderImpl':

@Service("myMovieLister")
public class SimpleMovieLister {
// ...
}

@Repository
public class MovieFinderImpl implements MovieFinder {
// ...
}

可是我的却是大写开头,
请问这是为什么呢?
...全文
814 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsinglongwu 2010-12-21
  • 打赏
  • 举报
回复
这也行。。。
sun_abc 2010-11-10
  • 打赏
  • 举报
回复
终于明白了,如果连着两个大写的字母开头,则扫描进来的bean就是大写开头的;
如果大写开头,后面跟小写,则扫描进来的是小写开头的
原来如此。。。
sun_abc 2010-11-08
  • 打赏
  • 举报
回复
我的意思是我配置spring环境的到bean名称是小写开头的类名,而不是他说的“默认bean名称生成器会返回小写开头的非限定(non-qualified)类名”。
这是为什么?用注解写的:@Service
myzee 2010-11-08
  • 打赏
  • 举报
回复
运行时spring自动建立的类的别名是小写开头,而不是你自己写的类代码吧???这如果小写开头不符合Java代码规范啊……
simaa0106 2010-11-08
  • 打赏
  • 举报
回复
这么专业的话你看着不吃力?

在Java中类名首字母肯定是大写,没有疑问的。在spring中,name的话很多是起到别名的作用

<bean id="dmzbean" class="org.olat.commons.dispatcher.SessionDispatcher">
<property name="chiefControllerCreator">
<bean class="org.olat.core.commons.chiefcontrollers.BaseChiefControllerCreator">
<property name="contentControllerCreator">
<bean class="org.eyan.meeting.main.EyanContentControllerCreator" />
</property>
</bean>
</property>


比如这里就可以看成是contentControllerCreator是org.eyan.meeting.main.EyanContentControllerCreator的别名,chiefControllerCreator是org.olat.core.commons.chiefcontrollers.BaseChiefControllerCreator的别名。

在正式的项目里面很大部分都是利用的接口引用,在spring里这样写的话可以实现。

我的理解是太书面的话很难理解透彻,自己多动手写一写,试一试,实在不理解的地方先学会用法,写点心得记下来怎么用的,可能隔段时间自己就能顿悟为什么这么写了。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧