Spring发展到现在有这么几种配置
[list]
[*]最古老的
[*]annotation加context:component-scan的方式
[/list]
想尝试一种完全依赖命名规范的配置方式。
在不使用@Controller,@Service及@Repository等的情况下仍然能够被正确注册。比如,
[list=1]
[*]所有XxxxAction(或XxxController)的类,自动被注册,且效果等同于@Controller
[*]XxxxService等同于@Service
[*]XxxxDao等同于@Repository
[/list]
其中自动注册部分我通过下面的能够配置搞定
[code="xml"]
/context:component-scan
[/code]
我的问题有几个
[size=x-large][b][color=red]A[/color][/b][/size]:其中上面的2,@Service貌似问题不大,Spring除了注册外似乎没有做特殊处理。如果我错了,请指正。
[size=x-large][b][color=red]B[/color][/b][/size]:有问题的是第1项。如果不使用@Controller,Spring只把类简单注册,并不去管类里面的@requestMapping等配置了。我查下来,似乎需要处理RequestMappingHandlerMapping#isHandler。不知是否正确?
[size=x-large][b][color=red]C[/color][/b][/size]:持久层我使用的是MyBatis,查下来需要改写org.mybatis.spring.mapper.MapperScannerConfigurer,添加includeFilters及excludeFilters。
配置类似上面如下。不知是否有更好方案?
[code="xml"]
<![CDATA[.*(?<!Dao)$]]>
[/code]
-------==== 题外话 ====--------
命名规范貌似不受Spring世界的待见啊!
我个人是倾向于[b]完全只[/b]按命名规范配置。因为在任何规模的开发中,严谨严格的命名规范都是必须的,那么都已经是叫做XxxxController,XxxxService了,还必须加@Controller及@Service,在我看来根本就是重复作业。
这个话题也是个老话题,不过有经验想谈谈的兄弟也请不吝赐教。