主页 > 创业  > 

Spring学习笔记03——SpringBoot的文件结构

Spring学习笔记03——SpringBoot的文件结构

Spring boot常见的文件结构:

src/ ├── main/ │ ├── java/ │ │ └── com.example.demo/ │ │ ├── DemoApplication.java # 主入口 │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器 │ │ ├── service/ # 业务逻辑 │ │ ├── mapper/ # 数据库操作接口 │ │ ├── entity/ # 数据库实体类 │ │ ├── dto/ # 数据传输对象 │ │ ├── listener/ # 监听器 │ │ └── interceptor/ # 拦截器 │ └── resources/ │ ├── application.yml # 全局配置 │ └── mapper/ # MyBatis 的 XML 文件 └── test/ # 测试代码
1. config(配置文件夹) 作用:像「工具箱的说明书」,存放各种配置类。常见内容: 数据库连接配置第三方工具(如Redis、Swagger)的配置自定义规则(比如日期格式、安全规则) 示例:@Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate() { // 配置 Redis 连接 return new RedisTemplate<>(); } }
2. mapper(数据映射文件夹) 作用:像「翻译官」,负责将 Java 对象和数据库表互相转换。常见技术:MyBatis 或 JPA 的数据库操作接口。示例:@Mapper // 告诉 MyBatis:这是操作数据库的接口 public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(int id); }
3. listener(监听器文件夹) 作用:像「耳朵」,监听应用中的事件(比如应用启动、关闭)。常见用途: 应用启动时初始化数据统计在线人数 示例:@Component public class MyListener implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { System.out.println("应用启动了!"); } }
4. entity(实体文件夹) 作用:像「数据库的镜子」,直接对应数据库表的字段。特点:纯数据类,通常和数据库表一一对应。示例:@Data // Lombok 自动生成 getter/setter public class User { private Long id; private String name; private Integer age; }
5. dto(数据传输对象文件夹) 作用:像「快递盒」,专门用于在不同层之间传递数据。场景:比如前端需要的字段和数据库实体不同,可以用 DTO 转换。示例:@Data public class UserDTO { private String username; private String email; // 数据库实体没有 email 字段,但前端需要 }
6. interceptor(拦截器文件夹) 作用:像「安检员」,在请求到达 Controller 前/后做检查或处理。常见用途: 登录验证(检查是否有 Token)记录请求日志 示例:public class AuthInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { // 检查用户是否登录 return true; // 放行请求 } } 7.bean 文件夹(或包)

作用:像「零件仓库」,存放被 Spring 管理的对象(Bean)的定义,尤其是那些不属于传统分层(如 Controller/Service)的组件。

常见内容:

自定义配置类(比如第三方工具需要的 Bean)

工具类 Bean(比如日期转换器、加密工具)

全局共享的组件(比如自定义异常处理器)

示例:

// 假设在 bean 包下定义一个加密工具 Bean @Component // 标记为 Bean public class EncryptUtils { public String encrypt(String data) { // 实现加密逻辑 return "加密后的数据"; } } 8 mon 文件夹(或包)

作用:像「公共工具箱」,存放全项目通用的代码,不依赖具体业务逻辑。

常见内容:

工具类(如日期处理、字符串处理)

常量类(如错误码、固定配置)

自定义异常类(如 BusinessException)

通用返回对象(如统一格式的 API 响应类)

公共配置(如全局异常处理器)

示例:

// 在 common 包下定义一个统一响应格式 @Data public class ApiResponse<T> { private int code; private String message; private T data; public static <T> ApiResponse<T> success(T data) { ApiResponse<T> response = new ApiResponse<>(); response.setCode(200); response.setMessage("成功"); response.setData(data); return response; } } 对比其他文件夹 文件夹 类比 核心区别 bean 特殊零件库 存放非分层专用的 Spring Bean common 共享工具箱 存放与业务无关的通用代码 config 说明书 专门配置 Bean 和第三方工具 其他核心文件夹回顾 文件夹作用比喻示例内容controller服务员(处理 HTTP 请求)UserControllerservice厨师(处理业务逻辑)UserServicerepository仓库管理员(操作数据库)UserRepository主入口(Main)大门(启动程序)SpringApplication.run()
为什么需要这么多文件夹? 职责分离:就像餐厅分工(厨师、服务员、采购员),不同代码做不同事。易于维护:修改数据库操作不用动业务逻辑代码。团队协作:后端开发可以专注 service,前端联调看 dto。
总结一句话 entity:直接对应数据库表dto:给前端看的“包装版”数据mapper:操作数据库的接口config:配置第三方工具interceptor:拦截请求做检查listener:监听应用生命周期事件
标签:

Spring学习笔记03——SpringBoot的文件结构由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Spring学习笔记03——SpringBoot的文件结构