2018-03-04-0.springboot帮我们做了哪些事?
(前文PS:家里win电脑没有电脑桌,用的小桌子,手高键盘低,打字贼类o(╯□╰)o)
都说springboot方便,相比于我们在spring时代中做的那么多的麻烦事:
1.spring1.x,我们在大量的用xml配置文件,配置对象,扫描,驱动,数据源等等
2.spring2.x,注解的产生,帮助我们便利了很多业务属性的配置,但是,大量的资源文件,比如jdbc.properties等资源文件读取,mybatis工厂对象注入,注解驱动,事务驱动等等,web.xml启动时监听spring配置文件,springmvc等。
3.spring3.x,java方式配置文件,用java类去配置文件
以上几点,虽然随着spring的发展,代码的编写越来越方便,但是我们发现,每一个项目有太多太多的重复性代码需要去c+v
能不能有一个,我们大家约定俗成的,由框架帮我们自动生成这些配置的方式呢?
基于这一点,spring-boot诞生了
1. Spring Boot
1.1. 什么是Spring Boot
1.2. Spring Boot的优缺点
这是某书上的截图,说来说去,spring boot的精华就是那一句:习惯优于配置
接下来,快速入门一下spring boot项目
现在的项目启动基本都是直接去一个网站下载springboot基础项目 http://spring.start.io
直接打开,或者用maven导入也行,打开后要等待一下maven的依赖导入,如果默认的maven依赖话下载会比较慢,这里推荐一个较快的国内maven源:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
在maven conf->setting.xml文件中,找到mirrors复制进去即可
maven下载完成后如下
pom依赖如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.syl</groupId>
<artifactId>springboot1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.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-actuator</artifactId>
</dependency>
<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>
我添加了web模块和actuator模块,这时候别急,不用去找什么springmvc,spring,aop什么的依赖,我们去maven依赖树看一下:
springboot的配置都是通过注解形式产生,@SpringBootApplication是一个组合注解,里面包括了多种注解,主函数中用一行代码
SpringApplication.run(Springboot1Application.class, args);
spring-boot-starter-web依赖下,依赖了我们各种以前需要的依赖,我们根本不需要依赖任何东西,只需导入springweb依赖即可,那我们需要做的各种初始化依赖
Spring Boot项目中推荐使用@ SpringBootConfiguration替代@Configuration
@EnableAutoConfiguration:启用自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置项目的配置项:
如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC
注意!@ComponentScan:默认扫描@SpringBootApplication所在类的同级目录以及它的子目录。
这是spring所有配置加载的入口,我们现在暂时不用管,直接运行主函数,会发现:
程序运行到此说明已经成功,网页访问以下8080网址,发现
程序运行起来了,因为springboot将tomcat作为一个插件引入项目中,而不是像以前一样,将整个项目打包到tomcat->webapp中,所以可以直接跑.
springboot帮我们做了很多约定俗称的功能,比如解决中文乱码什么的,这些都是在spring各个依赖的autoconfig*类中执行,这个是springboot下一个autoconfig依赖里面的:
就是上面的这个依赖,里面包含了各种自动的配置,什么aop啦,context啦,反正很多,只要是autoConfiguration结尾的class都是,具体内容以后如果用到了会细讲