大家好,今天搭建了springmvc4+hibernate4的一个web环境,但有些问题和疑惑,希望大家提出一些建议,也造福其他程序员
1.大家在平时工作中喜欢哪种开发目录结构?
a.第一种
com.book.模块1.
controller
service
dao
com.book.模块2.
controller
service
dao
...
b.第二种
还是
com.book.controller.
模块1
模块2
...
com.book.service.
模块1
模块2
...
com.book.dao.
模块1
模块2
...
出现这个问题,主要是因为在springmvc环境搭建的时候,用的注解,想通过<context:component-scan base-package="com.by.myapp.samples.controller">,将Controller和Service、Dao都扫描到spring容器中,其实是将Controller扫描到springmvc容器中,将Service、Dao扫描到spring容器中,所以得分开扫描,得分别写到2个配置文件,如下:
Springmvc容器中,对Controller的扫描:
<!--
扫描Controller,但是目录要精确,也就是说base-package目录下不能有其他的组件,只能有Controller,不然会影响到事务的开启,
如果用第一种目录结构,就得写N个模块的Controller扫描,
如果用第二种目录结构,只需要写一个,但带来的问题是,当模块比较多的时候,开发不太方便,例如某模块的Controller、Service、Dao存放的位置比较远,不方便找代码
-->
<context:component-scan base-package="com.by.myapp.samples.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
Spring容器中,对Service、Dao的扫描:
<!-- 扫描Service和Dao -->
<context:component-scan base-package="com.by.myapp">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
问题也在配置文件说明了,想请教下大家,对这种问题大家是怎么解决的?
即想少的配置(不会因为模块的增加而多加配置),又想开发的时候比较方便(不会因为模块的增加而使目录结构凌乱),希望大家赐教,集思广益。
------解决思路----------------------
第一种
<context:component-scan base-package="com.by.myapp.*.controller">
------解决思路----------------------
springside或者spring boot项目直接用吧,省了不少麻烦了