前言
Spring Team在现有Spring框架的基础上发布了一个创新的框架:Spring Boot。
Spring Boot的开发团队是:Pivotal
Spring Boot的主要作用是:简化开发,减少配置(简化配置和部署spring应用程序的过程)
Spring Boot框架提倡:一键部署、习惯优于配置
Spring Boot还是一个微框架,它与目前流行的微服务紧密联系,可以开发微应用。
1.Spring Boot主要特点
- 创建独立的Spring应用程序
- 嵌入的Tomcat,无需部署WAR文件
- 简化Maven配置
- 自动配置Spring
- 提供生产就绪型功能,如指标,健康检查和外部配置
- 绝对没有代码生成和对XML没有要求配置
2.新项目为什么需要Spring Boot
- 简化基于Java的应用程序开发,单元测试和集成测试过程。
- 通过提供一些默认值来减少开发,单元测试和集成测试时间。
- 提高生产力。
- 当使用默认值时,Spring Boot有自己的看法。如果不指定详细信息,它将使用其自己的默认配置。如果想要持久化,但是没有在POM文件中指定任何东西,那么Spring Boot会将Hibernate带有HSQLDB数据库的配置作为JPA提供者。
- 为大型项目(例如嵌入式服务器,安全性,度量,健康检查,外部化配置)提供许多非常常见的非功能特性/解决方案。
3.pring Boot精要
- 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
- 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
- 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
- Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。
4.Spring Boot的核心与限制
- Spring Boot的核心还是Spring。
- 未来的Spring项目不会有任何XML配置作为它的一部分,一切都将由项目Spring Boot处理。
5.环境搭建(IDEA)
IntelliJ IDEA 14.1已经支持Spring Boot。
5.1【File】-【New】-【Project】然后选择【Spring Initializr】
注:如果有报错,重试几次,可能是网络问题引起。
5.2选择JDK,根据图进行操作:
注:这里可以选择用war包,即以后将war包复制到Tomcat下解压部署即可。
5.3在初始依赖的导入时勾选要导入的包,比如Web、MySQL等,可以只选择支持Web,其它的都在pom.xml中导入依赖。
注意:导入两个依赖,Spring Boot会自动找到与之相应的包,一并加载(整体打包依赖)。
接下来填写项目名及项目源代码保存路径,如下:
填好后点Finish,现在已经初始化了一个Spring Boot框架。
项目结构
注意:在这里要将java文件夹设置为:Sources Root;将test文件夹设置为:Test Sources Root
访问静态资源:
Spring Boot将静态资源放在了src/main/resources/static中。
如:放入一张图片,启动Spring Boot,通过浏览器打开看。
注:resources中的static和templates文件夹是受保护的,必须要有访问权限。
templates:存放模板页,如thymeleaf,freemarker……。
前后端分离:
通过前端技术去调用,不使用任何后台相关技术,如freemarker、velocity、jsp等。
注:前后端分离一般在并发量比较高的情况下使用。
大型项目(互联网)前端调用全部是由前端团队去开发,后台只需要写好接口就可以了,告诉前端如何调用参数即可。
前端:前端设计,前端开发+PHP(调用后端接口,获取数据绑定)
后端:后端开发
pom.xml Maven构建说明文件。
WaterApplication 一个带有main方法的类,用于启动应用程序(关键)。
WaterApplicationTests 一个空的Junit测试类。
application.properties 一个空的properties文件,可以根据需要添加配置属性。
Spring Boot依赖
使用Spring Initializr创建Spring Boot项目,pom.xm中自带依赖包。
同时Spring Boot会自动找到与之相应的包,一并加载(整体打包依赖)。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--Spring Boot的父依赖,下面的依赖都继承该依赖。(可省略version版本)-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<!--spring-boot-starter-web包含:Spring-WebMVC、Spring-Web、Jackson、validation、Tomcat、Starter等内容-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--连接MySQL数据库,导入C3P0依赖-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
</dependencies>
<!--打包。executable jars 又称 fat jars,是可以直接在生产环境中运行的,包含所有编译生成的class文件以及依赖包。
注意,Spring Boot的这种打包方式需要使用Spring Boot提供的 spring-boot-maven-plugin 。-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
创建项目包
(1)在创建Spring Boot项目时,会默认创建包和类,比如:
目录名 |
说明 |
Templates |
模板文件(Freemarker、template、thymeleaf等 ),受保护的,必须要有权限才能访问(需认证通过)。 |
Static |
静态资源文件(图片、JS、css等),受保护的,必须要有权限才能访问(需认证通过)。 |
Webapp |
普通前端页面文件,不受保护,Spring Boot中不推荐JSP,所在webapp中放JSP已过时。 |
注:Mvnw及mvnw.cmd文件没啥用,可以删除。(Eclipse)
(2)打开Demo1Application.java文件查看源代码:
@SpringBootApplication public class Demo1Application { public static void main(String[] args) { SpringApplication.run(Demo1Application.class, args); } } |
启动
Spring Boot内置集成了Tomcat,所以无需启动Tomcat即可执行Demo1Application.java中的main方法。
空启动后控制面板会出现如下图片:
出现该界面,使用浏览器访问http://127.0.0.1:8080出现无法访问,请删除pom.xml 中Tomcat作用域代码:
<dependency> |
删除后重新启动,并访问http://127.0.0.1:8080
测试
在com.zking.demo1中创建包:controller包,并创建TestController.java
// @RestController是Controller和ResponseBody合并的,用这个,下面的@ResponseBody可省略,新版本中出现的
@Controller
public class TestController{
@ResponseBody //做为ajax返回
@RequestMapping(“/test”)
public String say(){
Return “Spring Boot 你大爷”;
}
}
热部署
当我们修改文件和创建文件时,都需要重新启动项目。这样频繁的操作很浪费时间,配置热部署可以让项目自动加载变化的文件,省去的手动操作。
在 pom.xml 文件中添加如下配置:
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 没有该配置,devtools 不生效 -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
多环境切换
application.properties 是 springboot 在运行中所需要的配置信息。
当我们在开发阶段,使用自己的机器开发,测试的时候需要用的测试服务器测试,上线时使用正式环境的服务器。
这三种环境需要的配置信息都不一样,当我们切换环境运行项目时,需要手动的修改多出配置信息,非常容易出错。
为了解决上述问题,springboot 提供多环境配置的机制,让开发者非常容易的根据需求而切换不同的配置环境。
在 src/main/resources 目录下创建三个配置文件:
application-dev.properties:用于开发环境
application-test.properties:用于测试环境
application-prod.properties:用于生产环境
我们可以在这个三个配置文件中设置不同的信息,application.properties 配置公共的信息。
在 application.properties 中配置:
spring.profiles.active=dev
注解介绍
下面列出 Spring Boot 开发中常用的注解:
@Configuration # 作用于类上,相当于一个 xml 配置文件
@Bean # 作用于方法上,相当于 xml 配置中的 <bean>
@SpringBootApplication # Spring Boot的核心注解,是一个组合注解,用于启动类上
@EnableAutoConfiguration # 启用自动配置,允许加载第三方 Jar 包的配置
@ComponentScan # 默认扫描 @SpringBootApplication 所在类的同级目录以及它的子目录
@PropertySource # 加载 properties 文件
@Value # 将配置文件的属性注入到 Bean 中特定的成员变量
@EnableConfigurationProperties # 开启一个特性,让配置文件的属性可以注入到 Bean 中,与 @ConfigurationProperties 结合使用
@ConfigurationProperties # 关联配置文件中的属性到 Bean 中
@Import # 加载指定 Class 文件,其生命周期被 Spring 管理
@ImportResource # 加载 xml 文件
评论 (0)