Boot 常用文件夹布局
注意:本页面内容为W3xue原创,未经授权禁止转载,违者必究!
来源:W3xue 发布时间:2019/9/25 10:41:42
到目前为止,如果你按着我们的教程进行一系列的操作,那么,你的项目结构会是如下所示(PS:我已经换了IDE的颜色风格,具体方法你可以参照之前的教程):
是的,现在只有7个文件,管理它们也不是很麻烦,但是它们的作用也是明显不同的:
JiaochengApplication类和ServletInitializer类属于初始化类,它们其实是可以合并的。
MainBean类是实体类,对应数据库的一张表,现在我们的这个项目很简单,只用到了一个表,但是现实中项目基本上都不止一张表,十几张、甚至几十张都是很常见的。
MainDao类由于绑定了实体类,和MainBean类是一个道理。
MainRestController类属于controller(控制层),还有即将使用网页模板的控制类,虽然理论上2个这样的控制类就足够了,但是你希望每个类上百个方法、代码动辄几千行吗?
MainService类、MainServiceImpl类跟MainRestController类是一样的道理,方法体多了都撑不住。
可以看出,在项目初期,如果都以扁平化的方式来管理是勉强可以的,但是到后期那就是一场灾难了。那么,如何高效、有序的组织和管理这些类呢?
一个有效的办法就是建立文件夹用来存放同一类型的类。其实,你可以自己想出各种分类的办法,但w3xue的会给你相关的建议。首先,我们把鼠标放到总包名“com.w3xue.jiaocheng”上,单击右键,选择new->package,新建一个名为“bean”的文件夹,这个文件夹专门用来存放实体类,如下图所示:
再把MainBean类的文件拖放进去,它会弹出refactor(重构)对话框,直接按refactor即可:
除了“bean”文件夹,我们还建立了“controller”、“mapper”、“service”几个文件夹。然后,我们再把不同的实体类一个一个拖动(不要一起拖动)到各自的文件夹里。最终,我们得到了如下的文件结构:
这样的文件结构管理起来较为轻松,不同层的类,分别放置在不同的文件夹。当然,如果你觉得有必要,还可以继续细分。但大体的文件架构我们建议按照这个来。
之前我们提到,JiaochengApplication类和ServletInitializer类其实是可以合并的,现在我们就来合并它们。分别打开这2个类,然后,把ServletInitializer类的主体代码,即如下部分,复制到JiaochengApplication类里面:
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(JiaochengApplication.class);
- }
粘贴的时候,会提示你导入需要的引用包,直接导入即可,或手工导入:
- import org.springframework.boot.builder.SpringApplicationBuilder;
这时我们发现,@Override(重写)注释字样有红色的下滑波浪线(在一般设置下,这是错误提示,除非你修改了IntelliJ IDEA的相关配置),这是因为我们的类还没有继承 SpringBootServletInitializer类,ServletInitializer类就继承了这个类,然后才可以使用@Override 注释。我们把JiaochengApplication类加一个继承:
- public class JiaochengApplication extends SpringBootServletInitializer
- {
- ....
- }
然后它会提示你导入相关引用包,直接导入即可,或手工导入:
- import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
然后,我们就可以把ServletInitializer类 删! 除! 了!(右键->Delete)
我们来把项目跑起来,看看是否有什么错误,访问如下地址测试一下:
- http://localhost:8080/jiaocheng/jpadiygetcomplete?name=%E6%9D%8E
OK,正常返回数据。
如果出现了错误,多半是因为在重构了某些类后,其他类在引用该类的时候,地址没有变动,这时我们去错误的地方把地址改正就可以了。
注意:本页面内容为W3xue原创,未经授权禁止转载,违者必究!
来源:W3xue 发布时间:2019/9/25 10:41:42