Spring Boot简介
简介
Spring Boot是由Pivotal团队提供的一种框架,基于 Spring,简化了Spring应用的搭建以及开发过程,使Spring项目可以更加快速地开发、部署和测试。内部提供了大量的starter,starter提供了许多自动配置类,开箱即用。
核心思想:约定优于配置(系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置)。大部分情况下依赖它提供的starter后,就可以使用默认的约定,加上属性文件,做大量的自定义配置,简化开发。
核心功能
1.独立运行的Spring项目:Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目我们只需要通过java -jar xx.jar类运行。
2.内嵌Servlet容器:Spring Boot内嵌Tomcat、Jetty或者Undertow作为Serlvet container,这样我们无需以war包的形式部署项目。
3.提供starter简化Maven配置:spring提供了一系列的starter pom来简化Maven的依赖加成,当使用了spring-boot-starter-web 时,会自动加入依赖包。使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置,减少了jar包和依赖的冲突。
4.自动配置spring:Spring boot 会根据在类路径中的jar包、类,为jar包里的类自动配置Bean。
5.准生产的应用监控:spring boot提供基于http、ssh、telnet对运行时的项目进行监控。
6.无代码生成和xml配置:spring boot是通过条件注解来实现的,这是spring4.x新特性。Spring4.x提倡使用java配置和注解配置组合,spring nott不需要任何xml配置即可实现spring的所有配置。
优点
1.快速构建项目;
2.对主流开发框架的无配置集成;
3.项目可独立运行,无需外部依赖servlet容器;
4.提供运行时的应用监控;
5.极大的提高了开发、部署效率;
6.与云计算的天然集成。
Spring Boot集成的常见工具包
spring-boot-starter:核心的工具包,提供了自动配置的支持,日志和YAML配置支持
spring-boot-starter-activemq:针对快速集成ActiveMQ的工具包
spring-boot-starter-aop:提供了快速集成SpringAOP和aspectj的工具包
spring-boot-starter-data-redis:提供了快速集成Redis和Jeids的工具包
spring-boot-starter-freemarker:提供了快速集成Freemarker的工具包
spring-boot-starter-mail:提供了快速集成邮件发送的工具包
spring-boot-starter-test:提供了对SrpingBoot应用的测试工具包
spring-boot-starter-web:提供了对web开发的工具包,报考基于SpringMVC的RESTfu应用开发,内置的tomcat服务器等
spring-boot-starter-actuator:提供了对生产环境中应用监控的工具包
spring-boot-starter-loggin:提供了对日志的工具包,默认使用logback
注:spring-boot-starter-xxxx:SpringBoot中自带的starter
xxx- spring-boot-starter:第三方和SpringBoot集成提供的starter
Spring Boot项目搭建
应用基本结构
pom.xml:Maven构建说明文件
Application:一个带有main()方法的启动配置类,用于启动应用程序
application.properties:一个空的properties文件,可以根据需要添加配置属性
ApplicationTest:一个空的Junit测试了,它加载了一个使用Spring Boot字典配置功能的Spring应用程序上下文
static目录:放置应用程序的静态资源(JavaScript、样式表、图片等)
templates目录:放置应用程序的模板文件
三种搭建方式
1.通过IDEA或者Eclipse或者MyEclipse的Spring Initializer创建
2.访问http://start.spring.io创建SpringBoot
3.自己手动搭建(创建普通maven项目,修改pom.xml)
注:前两种方式必须联网,第一种本质也是在http://start.spring.io生成的项目架构
Spring Boot解析
pom.xml文件解析
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
有了这个,当前的项目才是Spring Boot项目,spring-boot-starter-parent是一个特殊的starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。
应用入口类
Spring Boot项目通常有一个名为*Application的入口类,入口类里有一个 main 方法, 这个main方法其实就是一个标准的Java应用的入口方法。
@SpringBootApplication是Spring Boot的核心注解,它是一个组合注解,该注解组合了:@Configuration、@EnableAutoConfiguration、@ComponentScan,开启组件扫描和
自动配置。
@EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置;
自动配置过程:借助@Import引入的配置类,读取classpath中所有的META-INF/spring.factories文件,将其中org.springframework.boot.autoconfigure.EnableutoConfiguration对应的配置项通过反射(Java Refletion)实例化为对应的标注了@Configuration的JavaConfig形式的IOC容器配置类,然后汇总为一个并加载到IoC容器。
附:更详细的流程解析参考
https://www.cnblogs.com/itrena/p/8352846.html
https://blog.csdn.net/qq_39340822/article/details/77370714
@SpringBootConfiguration(内部为@Configuration):被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境;
@ComponentScan:启动组件扫描,这样Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean,默认扫描@SpringBootApplication所在类的同级目录及子目录路的Bean,所以最好将该启动类放到根包路径下。
参数设置
简介
参数在springboot启动的时候会被封装在一个ApplicationArguments对象中
1.参数的处理:在应用启动的过程中,可以通过启动参数给用用传递一些额外的参数来控制应用的运行
例:java –jar ****.jar password=123
在main方法中直接使用传入的参数
可以任何类中直接通过@Autowired注入一个ApplicationArguments对象
2.SpingBoot中有非常多的地方可以向应用传入参数,主要的参数来源及优先级:
a.命令行参数;
b.ServletConfig和ServletContext
c.application-{profile}.properties或者yaml文件
d.application.properties或者yaml文件
3.SptingBoot提供了方便的properties绑定机制:
a.默认从application.properties中加载配置
b.资源文件{application.properties}加载顺序:
1)当前目录/config子目录
2)当前目录
3)classpath下的/config子目录
4)classpath
4.想自定义配置文件名称,可以通过(只能通过命令行参数配置)
–spring.config.name配置配置文件名称
–spring.config.location配置配置文件具体加载位置
注意:相同属性覆盖,不同属性合并
附:可配置参数参考
https://blog.csdn.net/lisulong1/article/details/78901817
4.2参数绑定
@ConfigurationProperties参数绑定标签:乐意把资源文件中的内容绑定到对象上
例:
其中,prefix可以去掉
4.3热部署
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
SpringBoot应用的热部署:使用spring-boot-devtools包来完成SpringBoot应用reshuffle
原理:SpringBoot重启是reload重启,通过监控classpath的变化,出发重启。SpringBoot通过两个classpath来完成reload,一个baseic classloder中加载不变的类,一个restart classloder中加载classpath中的类,重启时,restart classloder中的类舍弃并重新加载
排除资源:
spring.devtools.restart.exclude=
spring.devtools.restart.additional.exclude=public/**(处理默认配置排除之外的)
spring.devtools.restart.enabled=false(禁用自动重启)
可以使用tigger.file的重启策略
spring.devtools.restart.tiggerFile=tigger.file
5集成DataSource
添加相关依赖
添加Druid依赖、mysql链接驱动依赖、jdbc依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
配置文件配置
spring.datasource.url = jdbc:mysql://10.10.10.66:3306/springboot
spring.datasource.username = spring
spring.datasource.password = spring
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
打war包:https://www.cnblogs.com/gdpuzxs/p/7224959.html?utm_source=itdadao&utm_medium=referral