config目录:该目录用于存放一些配置类,配置类用注解@Configuration标识。
filter目录:用于存放自定义的过滤器类,过滤掉一些错误的请求和未登录用户,也可以修改请求和相应的内容;过滤器一般实现Filter接口并且会用注解@WebFilter标识。
interceptor目录:用于存放拦截器类,作用是对正在运行的流程进行干预,在某个方法被访问之前,进行拦截,然后在之前或之后加入某些操作,拦截器是AOP 的一种实现策略;拦截器一般实现HandlerInterceptor接口重写preHandle、postHandle、afterCompletion这三个方法,然后可以在这三个方法里加入一些日志用于记录某些方法的调用信息。
controller目录:用于存放控制器类,控制器类也就是MVC中的“C”负责请求的接收和处理和JavaWeb中的servlet功能类似,类上常用注解@RequestMapping("/url")指定请求访问的路径,用@Controller标识该类是一个控制器类。
service目录:用于存放处理具体业务逻辑的类,通常对数据库事务控制也放在这一层;常用注解@Service标识,用注解@Transactional达到事务控制的目的
mapper目录:存放操作数据库的接口,封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。
pojo(或entity)目录:用于存放实体类,注意:我这里只是将具有VO、DTO、DO、PO性质的实体类都统一放在pojo目录下。
utils目录:存放一些三方工具类的,例如:Json转换、雪花算法生成这些类。
exception目录:用于存放自定义业务异常类和全局异常处理类。
resources目录下的:
mapper目录:用于存放mybatis操作数据库的xml文件的,xml文件中写具体操作数据库数据的sql,注意:如果是用的mybatis-plus或者JPA封装好的方法操作数据库则可以不用写xml文件。
public目录:用于存放静态资源文件(图片、js、css等等)或者html文件。
static目录:作用同public目录,只不过springboot默认的静态资源访问路径是:META-INF/resources > resources > static > public (访问优先级也是如此)。
templates目录:用于存放thymeleaf模板。
一般配置文件会将线上环境、测试环境和开发环境配置的公共部分抽到application.yml里,然后将部分不同的配置(例如线上和测试用的数据库连接不一样)会分别放入用类似“-环境前缀”的yml文件里,我这里就是“-dev”(开发环境)和“-prod”(线上环境),一般在公司还会有个“-test”(测试环境)。
最后是编写最重要的Application启动类,启动类需要和config、controller这些目录同级
各个目录下类的具体代码
整体结构预览: