相关文章推荐
打篮球的拐杖  ·  在Spring ...·  3 周前    · 
从未表白的遥控器  ·  如何在Java服务中实现自动化的健康检查与自 ...·  3 天前    · 
爱听歌的凉面  ·  spring启动时只执行一次的方法实现_sp ...·  昨天    · 
有腹肌的大白菜  ·  进程组、会话和作业控制(process ...·  5 月前    · 
坏坏的手术刀  ·  Logtail配置文件和记录文件_日志服务( ...·  7 月前    · 
踢足球的酸菜鱼  ·  Mysql 面试习题(一)深坑 - 知乎·  1 年前    · 
胡子拉碴的凉面  ·  chatgpt写电影解说如何提问_头条·  1 年前    · 
文质彬彬的拐杖  ·  反射的一个应用-获取泛型对象的属性_泛型获取 ...·  1 年前    · 
Code  ›  Spring Boot 学习笔记 – 代码结构开发者社区
boot
https://cloud.tencent.com/developer/article/1914524
深情的小刀
1 年前
作者头像
Thoughtworks-杨焱
0 篇文章

Spring Boot 学习笔记 – 代码结构

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 杨焱的专栏 > Spring Boot 学习笔记 – 代码结构

Spring Boot 学习笔记 – 代码结构

作者头像
Thoughtworks-杨焱
发布 于 2021-12-08 08:28:54
251 0
发布 于 2021-12-08 08:28:54
举报

14.代码结构

Spring Boot 没有要求必须是某种代码结构,但是有一些最佳的实践。

14.1 使用默认包

当一个类没有包含 package 定义就表示在一个默认包中。使用默认的包通常是不好的,应该避免。它在 Spring Boot 应用程序中在使用 @ComponentScan , @EntityScan 或者是 @ SpirngBootApplicaiton 注解会发生特定的问题.因为任何一个 jar 中的类都会被加载.

我们推荐你沿用 Java 推荐的包命名规范,使用反向的域名名称(举个例子,com.example.project).

14.2 定位主程序类

我们通常建议你将主程序类放在高于其他类的顶层包下. @EnableAutoConfiguration 注解通常放在你的主0.类上,并且它明确的定义了一个基础的”搜索包”用户扫描某些项.举个例子,如果你写的是一个 JPA应用程序,这个带有 @EnableAutoCOnfiguration 注解的类用于搜索 @Enitty 项目.

使用一个顶层包路径同样允许 @ComponentScan 不配置 basePackage 属性. 你可以配置 @SpringBootApplication 注解在你的放在顶层包主类上.

这是一个典型的结构:

com
+- example
 +- myproject
     +- Application.java
     +- domain
     |   +- Customer.java
     |   +- CustomerRepository.java
     +- service
     |   +- CustomerService.java
     +- web
         +- CustomerController.java

这个 Application.java 文件将定义 main 方法,在类上加上 @Configuration 注解

package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
}

15.配置类

Spring Boot 偏向于使用基于 java 代码的配置,虽然可以调用 SpringApplication.run() 基于 XML 配置文件,我们通常推荐主要来源是一个 @Configuration 类.通常一个定义一个 main 方法的类同样是一个好的. 许多网络上的 Spring 配置示例代码使用 XML 配置.永远尽可能的尝试使用同等的 java 代码配置.搜索 enable 开头的注解可以好的开始.

###15.1 引入附加的配置类 你不用必须将所有的 @Configuration 放在一个单独的类里. @Import 注解可以用于引入一个附加的配置类.无论如何,你可以使用 @ComponentScan 去自动的收集所有的 Spring 组件,包括了有 @Configuration 注解的类.

###15.2 引入 XML 配置 如果你无论如何必须使用 XML 的配置文件,我们建议你仍然开始于一个 @Configuration 类.你可以使用一个附加 @ImportResource 注解去加载 XML 配置文件.

##16. 自动配置 Spring Boot 自动配置尝试基于jar 的依赖关系自动配置 Spring 应用.举个例子,如果 HSQLDB 在 classpath ,并且你没有手动配置任何 数据库 连接 bean , 自动配置将会配置一个内存数据库.

你需要配置 @EnableAutoConfiguration 或者 @SpringBootApplication 注解在你的一个 @Configuration 类上. 你应该总是仅仅添加一个 @EnableAutoConfigration 注解.我们通常建议你添加到主要的 @Configuraiton 类上.

###16.1 逐步取代自动配置 自动配置是非侵入式的,在任何时候你可以定义自己的配置替换自动配置的特定部分.举个例子,如果你添加自己的 DataSource bean, 则默认内置的数据库支持将不会被使用.

如果你需要找出自动配置目前起到了哪些作用和为什么,启动应用的时候添加 --debug 即可.这将启动 核心日志和自动配置报告 debug 日志输出到控制台.

###16.2 禁用特定的自动配置 如果特定的自动配置类不是你想要的,你可以使用 @EnableAutoConfiguration 的排除属性 exclude 禁用.

 
推荐文章
打篮球的拐杖  ·  在Spring Boot中设置响应头_mob64ca12e6b22d的技术博客_
3 周前
从未表白的遥控器  ·  如何在Java服务中实现自动化的健康检查与自愈机制 - 省赚客开发者团队
3 天前
爱听歌的凉面  ·  spring启动时只执行一次的方法实现_springboottest只启动一次
昨天
有腹肌的大白菜  ·  进程组、会话和作业控制(process groups, sessions, and job control)-Linux系统编程手册_cannot set terminal process group
5 月前
坏坏的手术刀  ·  Logtail配置文件和记录文件_日志服务(SLS)-阿里云帮助中心
7 月前
踢足球的酸菜鱼  ·  Mysql 面试习题(一)深坑 - 知乎
1 年前
胡子拉碴的凉面  ·  chatgpt写电影解说如何提问_头条
1 年前
文质彬彬的拐杖  ·  反射的一个应用-获取泛型对象的属性_泛型获取属性值_JWMAX-Y的博客-CSDN博客
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号