概述

Spring 作为一个轻量级的容器,在 Java EE 开发中得到了广泛的应用,但是 Spring 的配置烦琐 雕肿,在和各种第三方框架进行整合时代码量都非常大,并且整合的代码大多是重复的,为了便开 发者能够快速上手 Spri吨,利用 Spring 框架快速搭建 Java EE 项目, Spring Boot 应运而生。

用SpringBoot开发项目的好处

  • 提供一个快速的 Spring 项目搭建渠道。
  • 开箱即用,很少的Spring 配直就能运行一个JavaEE项目。
  • 提供了生产级的服务监控方案。
  • 内嵌服务器,可以快速部署。
  • 提供了一系列非功能性的通用配置。
  • 纯Java配置,没有代码生成,也不需要XML配置。

开发第一个SpringBoot程序

项目构建:

1.添加依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
</parent>

spring-boot-starter-parent 是一个特殊的 Starter, 提供了一些 Maven 的默认配置,同时还提供了 dependency-management,可以便开发者在引入其他依赖时不必输入版本号,方便依赖管理。Spring Boot 中提供的 Starter 非常多这些 Starter 主要为第三方库提供自动配置,例如要开发一个 Web 项目,就可以先引入一个 Web 的 Starter,代码如下:

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
</dependencies>

2.写个控制器返回HelloWord测试下

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "hello spring boot";
    }
}

在控制器中提供了一个“/hello”接口,此时需要配置包扫描才能将 HelloController注册到 Spring MVC 容器中,因此在 App 类上面再添加一个注解@ComponentScan 进行包扫描,代码如下:

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

3.打包启动
在生产环境中,也可以通过这样的方式来 运行一个 Spring Boot 应用。要将 Spring Boot 打成 jar 包运行,首先需要添加一个 plugin 到 pom.xml 文件中,代码如下:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-pluginmavenplug</artifactId>
</dependency>

然后用mvc package命令进行打包,打包完成后,在项目的 target目录下会生成一个jar文件,通过java -jar命令直接启动这个jar文件

不使用spring-boot-stater-parent

spring-boot-starter-parent 虽然方便,但是读者在公司中开发微服务项目或者多模块项目时一般 需要使用公司自己的 parent, 这个时候如果还想进行项目依赖版本的统一管理,就需要使用 dependencyManagement来实现了。添加如下代码到 pom.xml 文件中 :

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.2.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

此时,就可以不用继承 spring-boot-starter-parent 了,但是 Java 的版本、编码的格式等都需要 开发者手动配置。

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
 </build>

如果是通过普通Maven项目配置成的Spring Boot 项目,那么在pom.xml文件中加入如下配置即可:

 <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 </properties>

@SpringBootApplication 实际上是一个组合注解

  • @SpringBootConfiguration 的功能就是表明这是一个配置 类,开发者可以在这个类中配置 Bean
  • @EnableAutoConfiguration 表示开启自动化配置
  • @ComponentScan完成包扫描,也是Spring中的功能
  • @ComponentScan 注解,除了扫描@Service, @Repository、@Component、 @Controller和@RestController等之外,也会扫描@Configuration注解的类
  • @ConfigurationProperties 中的 prefix 属性描述了要加载的配置文件的前缀