Files
notes_estom/Spring/Springboot/1简介.md
2020-07-21 09:13:01 +08:00

2.7 KiB
Raw Blame History

1 简介

Spring Boot 是基于 Spring 框架基础上推出的一个全新的框架, 旨在让开发者可以轻松地创建一个可独立运行的生产级别的应用程序。利用控制反转的核心特性并通过依赖注入实现控制反转来实现管理对象生命周期容器化利用面向切面编程进行声明式的事务管理整合多种持久化技术管理数据访问提供大量优秀的Web框架方便开发等等。

Springboot的优势

  1. 能够轻松、方便地创建一个 Spring 应用;
  2. 直接使用内嵌的 Tomcat, Jetty, Undertow 容器(无需再手动安装容器,通过部署 WAR 包的方式);
  3. 内部自动管理各种 Jar 包的版本依赖关系,再也不用为版本冲突而烦恼啦;
  4. 自动化配置 Spring 相关功能,以及第三方库;
  5. 提供诸如指标,健康检查, 外部化配置等功能;
  6. "零配置",再也不需要手写地狱般的 XML 配置了;

2 相关特性

REST风格

控制反转

面向切面

3 工程结构

推荐工程结构

com
  +- example
    +- myproject
      +- Application.java
      |
      +- domain
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
      +- web
      |  +- CustomerController.java
      |
  • root packagecom.example.myproject所有的类和其他package都在root package之下。
  • 应用主类Application.java该类直接位于root package下。通常我们会在应用主类中做一些框架配置扫描等配置我们放在root package下可以帮助程序减少手工配置来加载到我们希望被Spring加载的内容
  • com.example.myproject.domain包用于定义实体映射关系与数据访问相关的接口和实现
  • com.example.myproject.service包用于编写业务逻辑相关的接口与实现
  • com.example.myproject.web用于编写Web层相关的实现比如Spring MVC的Controller等

Spring Boot的应用主类会自动扫描root package以及所有子包下的所有类来进行初始化。

非典型结构下的初始化

  1. 使用@ComponentScan注解指定具体的加载包
@SpringBootApplication
@ComponentScan(basePackages="com.example")
public class Bootstrap {

    public static void main(String[] args) {
        SpringApplication.run(Bootstrap.class, args);
    }

}
  1. 使用@Bean注解来初始化。在主类中进行初始化。
@SpringBootApplication
public class Bootstrap {

    public static void main(String[] args) {
        SpringApplication.run(Bootstrap.class, args);
    }

    @Bean
    public CustomerController customerController() {
        return new CustomerController();
    }

}