Spring Boot 学习笔记 - 代码结构

本文介绍Spring Boot项目的代码组织结构与配置方法,包括使用默认包的问题、主程序类的位置建议、配置类的最佳实践及自动配置的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
这个 App lication.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 应用.举个例子,如果 HSQLDBclasspath,并且你没有手动配置任何数据库连接 bean, 自动配置将会配置一个内存数据库. 你需要配置 @EnableAutoConfiguration或者 @SpringBootApplication注解在你的一个 @Configuration 类上. 你应该总是仅仅添加一个 @EnableAutoConfigration注解.我们通常建议你添加到主要的 @Configuraiton类上. ###16.1 逐步取代自动配置 自动配置是非侵入式的,在任何时候你可以定义自己的配置替换自动配置的特定部分.举个例子,如果你添加自己的 DataSource bean, 则默认内置的数据库支持将不会被使用. 如果你需要找出自动配置目前起到了哪些作用和为什么,启动应用的时候添加 --debug即可.这将启动 核心日志和自动配置报告 debug 日志输出到控制台. ###16.2 禁用特定的自动配置 如果特定的自动配置类不是你想要的,你可以使用 @EnableAutoConfiguration的排除属性 exclude禁用. import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*;
 @Configuration
 @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
 public class MyConfiguration {
 }
如果这个类不在 classpath,你可以使用 excludeName属性指定完整的名称起到相同的作用.最后,也可以通过 spring.autoconfigure.exclude属性控制一个列表,控制自动配置的排除项.
你可以定义排除项同时使用两种方式.

tips:

本文由wp2Blog导入,原文链接:http://devonios.com/spring-boot-study-1.html

转载于:https://my.oschina.net/yangyan/blog/859211

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值