Spring Boot 入门

Posted codeya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 入门相关的知识,希望对你有一定的参考价值。

目录

Spring Boot 入门    1

1    介绍    2

1.1    版本    2

1.2    启动类    3

1.3    配置文件    3

2    第一个Spring Boot web应用    3

2.1    idea创建demo应用    3

2.2    建好的应用结构    6

2.3    Pom.xml    7

2.4    增加一个controller进行测试    8

2.5    启动应用    8

2.6    测试    9

3    支持jdbcTemplate    9

3.1    Pom.xml增加依赖    9

3.2    配置文件里增加数据源信息    10

3.3    在dao里使用JdbcTemplate    10

3.4    测试    10

4    支持MyBatis    11

4.1    Pom.xml里增加依赖    11

4.2    增加dao接口    12

4.3    增加接口对应的Mapper    12

4.4    启动类里增加@MapperScan    12

4.5    测试    13

5    读取配置文件里的属性    14

5.1    自定义配置文件    15

6    日志    16

7    测试    17

8    扩展    18

8.1    如果启动类所在目录为较底层目录    18

8.2    打包+运行    18

8.2.1    idea打包    18

8.2.2    使用java –jar运行此jar    19

8.3    使用profile区分配置    20

8.3.1    测试profile    20

 

Spring Boot 入门

 

 

参考官方文档

https://docs.spring.io/spring-boot/docs/1.5.8.RELEASE/reference/htmlsingle

  1. 介绍

 

 

 

SpringBoot可以帮助开发者更容易的创建基于Spring的应用程序和服务

默认集成了Tomcat容器,所以可以独立运行,可以不依赖于外部容器。当然也可以达成war包部署

提供了一种从main()方法启动的便捷方式,也就说:只需要在main方法所在的类右键Run即可启动应用

相比于传统的spring应用里需要各种配置,比如web.xml 加载spring、spring mvc,扫描路径等,SpringBoot只需要很少的几个配置或者注解就可以达到。

整合了很多框架,pom.xml里只需要引入需要的starter依赖就可以了。

 

 

  1. 版本

Spring Boot 1.5.8(目前我们使用的):

此版本默认使用1.7的jdk(官方建议使用1.8),4.3.12.RELEASE 版本的spring框架。

内嵌Tomcat 8

Maven 3.2或更高版本

 

 

最新的Spring Boot 2.0.0.BUILD-SNAPSHOT:

Java 8  and Spring Framework 5.0.2.RELEASE or above.

 

  1. 启动类


使用@SpringBootApplication注解

 

  1. 配置文件

默认使用的application.properties/ application.yml

 

yml文件书写时注意,冒号和value之间有个空格

 

上面的写法相当于properties文件里的:

server.port=8081

server.context-path=/demo

  1. 第一个Spring Boot web应用

  1. idea创建demo应用

idea自带file->new->project->Spring Initializr 然后next。。next。。。

 

如果是搭一个最简单的web应用。只需要勾选如下Web即可:

 

如果使用mybatis则需要勾选下图的MyBatis,如果使用jdbcTemplate,则需要勾选下图的JDBC---此时需要在创建好的工程的配置文件里设置相应的数据源。

 

也可以不勾选,直接在pom文件里添加对应的依赖即可。

 

 

  1. 建好的应用结构

 

正常启动类在相对于其他目录的较高层目录。。如果修改启动类的路径,需要修改@SpringBootApplication的scanBasePackages,具体可参考后面的章节

 

 

 

  1. Pom.xml

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

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

<dependencies>

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

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

 

 

注意:如果网络不好,可能会打不开上面的界面。也可以自行创建一个普通的maven工程。。然后参考上面的pom文件进行修改:1.修改<parent>节点 2.增加springboot的相关依赖 3.<build>节点里增加spring-boot-maven-plugin,这样打出来的才是一个可执行的jar

 

  1. 增加一个controller进行测试

  1. 启动应用

 

 

默认的端口是8080.。如需修改,请在application.yml里修改

server:
port:
8080 #如果此处不配置,则使用默认的8080端口.。

 

  1. 测试

 

  1. 支持jdbcTemplate

  1. Pom.xml增加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
</dependency>

 

  1. 配置文件里增加数据源信息

spring:
datasource:
driver-class-name:
oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@ip:端口:sid
username: 用户名
password: 密码

 

恭喜你,下面可以使用Autowired注入JdbcTemplate了

  1. 在dao里使用JdbcTemplate

  1. 测试

可以增加自己的controller类进行测试

  1. 支持MyBatis

  1. Pom.xml里增加依赖

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>

 

和使用jdbctemplate一样,需要在配置文件里存在需要的数据源信息。

 

  1. 增加dao接口

 

  1. 增加接口对应的Mapper

在resources的同级目录增加同名的xml文件。。当mapper xml与mapper class不在同一个目录下时需要在配置文件指定mybatis.mapper-locations,比如: mybatis.mapper-locations=classpath*:com/codeya/springboot/**/dao/*.xml

  1. 启动类里增加@MapperScan

basePackage 指定mybatis接口对应的包的位置

 

  1. 测试

 

  1. 读取配置文件里的属性

使用@Value("${属性名}")获取配置文件里的属性

 

举例:

配置文件里增加两个属性

 

 

  1. 自定义配置文件

使用@PropertySource 来引入配置文件。。此注解需要与@Configuration 配合使用。

 

  1. 日志

 

SpringBoot默认使用的logback。默认纪录到INFO级别,即记录ERROR, WARN和INFO级别的信息。

如某路径需输出debug级别的日志,需要在配置文件里定义logging.level.包路径=DEBUG,比如下图的com.example.demo: debug表示com.example.demo包的日志输出级别是debug

logging.level.root表示该应用总的日志开关,默认是INFO。

因为输出日志文件需要消耗I/O性能,生产环境请将所有日志开关设置为ERROR

 

默认不输出到文件,如需输出文件,需要在配置文件中设定logging.file属性,此属性可定义相对路径或绝对路径。

 

日志文件每达到10M就会被分割。

logging.pattern.console 是定义控制台显示日志时的格式

logging.pattern.file是定义文件记录日志时的格式

这两个值默认不需要设置,但默认的格式不会输出行号。。如需输出行号,可以改成下图里的格式。。

其中%L表示行号

 

logging:
file:
log/log.log
level:
root:
info
com.codeya.springboot: debug
pattern:
console:
-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}:%L){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
file: -%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39}:%L:%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

 

  1. 测试

SpringBootTest里的classes指定的是启动类

  1. 扩展

  1. 如果启动类所在目录为较底层目录

正常启动类在相对于其他目录的较高层目录(左图),如果将启动类加到一个底层目录,比如新增的main目录下会怎样呢?

 

如果启动类里不做改动,则原来的路径访问都会报404.。这是因为默认的扫描路径是启动类的子目录。。

此时需要手动指定启动类里的scanBasePackages

 

 

  1. 打包+运行

    1. idea打包

idea见下图,使用的命令clean package -Dmaven.test.skip,。。也可以使用命令行mvn clean package -Dmaven.test.skip进行打包

 -Dmaven.test.skip=true 跳过测试。    

 

 

最终打出来的包:

可以自己打开看看。。这个jar的目录和普通的jar不太一样。。里面包含了lib和内嵌的tomcat。。

  1. 使用java –jar运行此jar

Java –jar demo-0.0.1-SNAPSHOT.jar

 

  1. 使用profile区分配置

默认先加载application.yml/.properties文件,然后使用对应的profile文件来覆盖其配置。。

可以在启动的时候指定profile。也可以在application文件里指定spring.profiles.active(见下图)。

如果是启动参数里设置则:Java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

 

  1. 测试profile

我们在application.yml 里设置的端口为8080,test. properties1= hellooooooooooooo

新增加两个配置文件application-product.yml 、application-dev.yml、,端口分别设为8081和8082,

test. properties1的值分别加上对应的后缀。。见下图

 

 

 

 

然后启动配置里指定profile(可以看出是文件的后缀),参考下图:

也可以这样设置:

 

启动测试

以上是关于Spring Boot 入门的主要内容,如果未能解决你的问题,请参考以下文章

Spring/Spring-Boot 学习2 入门知识

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

Spring Boot的简单入门