springboot 入门最佳实践
springboot的出现,使得spring接入门槛极大的降低,我们再也不需要去理解什么复杂的xml配置,就可以很容易的构建一个spring服务。
一个重要的原因是,springboot为我们做了大量的默认配置行为。因此,我们需要去了解和遵循一些基本原则,来让整个项目更加规范。
项目结构
1、代码结构规范
避免java类放置在下(也就是没有package),因为这种方式可能会导致某些注解扫描行为 去扫描所有的jar,极大降低效率。default package
推荐的做法是设置一个业务的package,并将启动类放置到根package
。这样springboot默认会扫描根package及其子包下边的相关bean。
如下图所示,如果Application不在根包下,可能会导致上层包的相关数据不会被扫描到。
com
+- example
+- myapplication
+- Application.java
|
+- customer
| +- Customer.java
| +- CustomerController.java
| +- CustomerService.java
| +- CustomerRepository.java
|
+- order
+- Order.java
+- OrderController.java
+- OrderService.java
+- OrderRepository.java
2、服务启动类
springboot的启动方式非常简单,在一个普通的java类加上@SpringBootApplication
注解,然后执行以下方法,即可完成启动。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication 注解说明
通过启用@SpringBootApplication
注解,我们事实上启用了以下三个注解:
-
@EnableAutoConfiguration
: 启用 springboot 的auto-configuration 机制 -
@ComponentScan
: 扫描项目中的bean -
@Configuration
: 为context中注入额外的自定义bean,或者导入其他的 configuration 类
启动原理
springboot
相比传统的spring web程序,入门门槛进一步降低,这主要得益于以下两点:
1、无需进行繁琐的xml配置,springboot默认配置了许多的@Configuration
来代替原来的xml。
2、springbootStarter
,这是springboot中非常重要的一个概念。如何理解starter呢,个人认为starter就是一个智能化的@Configuration配置类
。它会依据项目引入的jar包、用户的参数配置、个性化配置自动实例化所需的bean,从而让整个starter的功能很容易的就运行起来。
后续篇幅我们将一步步来演示,如何构建自己的starter,让别人很容易的使用相关功能。
关于starter的创建过程和原理,请继续阅读:springboot starter 原理解析及实践
参考资料
https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/html/using-spring-boot.html