Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。经过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。css
(1)建立项目,选择Spring starter Project(需先在Eclipse安装Spring Tool Suite),按Next: html
(2)填写跟项目相关的各类信息,而后Next: java
(3)选择须要的Dependency,而后Next:
(4)最后”Finish”,就开始下载jar包了,这个过程须要的时间比较长。nginx
如上图所示,Spring Boot的基础结构共三个文件:web
另外,spingboot建议的目录结果以下:
root package结构:com.example.myprojectspring
com
+- example
+- myproject
+- Application.java
| +- domain | +- Customer.java
| +- CustomerRepository.java |
+- service
| +- CustomerService.java |
+- controller
| +- CustomerController.java |复制代码
一、Application.java 建议放到根目录下面,主要用于作一些框架配置
二、domain目录主要用于实体(Entity)与数据访问层(Repository)
三、service 层主要是业务类代码
四、controller 负责页面访问控制apache
pom.xml文件中默认有两个模块:json
spring-boot-starter :核心模块,包括自动配置支持、日志和YAML;api
spring-boot-starter-test :测试模块,包括JUnit、Hamcrest、Mockito。浏览器
1,建立controller
package com.ailianshuo.helloword.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}复制代码
@RestController 的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了
2,启动controller准备
按上面的代码还不能启动单个controller,须要添加下面代码才能够:
(1)@EnableAutoConfiguration :做用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这就减小了开发人员的工做量。(也可使用@SpringBootApplication 等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan)
(2)启动程序:
public static void main(String[] args) throws Exception {
SpringApplication.run(**.class, args);
}
完整代码以下:
@EnableAutoConfiguration
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(HelloWorldController.class);
}
}复制代码
3,启动单个controller
(1)右键HelloWorldController中的main方法,Run As -> Spring Boot App,项目就能够启动了。
(2) 编译器显示以下内容,即为启动成功。
2017-08-19 11:12:49.814 INFO 4164 — [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-08-19 11:12:49.819 INFO 4164 — [ main] c.a.h.controller.HelloWorldController : Started HelloWorldController in 3.351 seconds (JVM running for 4.573)
(3)在浏览器访问http://localhost:8080/hello ,就能够看到效果了。
在此我向你们推荐一个架构学习交流群。交流学习群号:575745314 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
编辑pom.xml
[html] view plain copy
简单解释一下上面的配置
首先看看Spring-boot-start-web包的依赖
能够看到 其实这个包就是一些 日志包 还有内置Tomcat JSON包 SpringMVC/Web包 这也就差很少解释了为何直接跑起来了
其实这个就是能够理解为简单封装了一下Spring 使得咱们配置更加便捷。
spring-boot-devtools的引入,其依赖包的学习
这个包 包含一些Spring的核心包。。。
spring-boot-maven-plugin 最后还加入了 一个SpringBoot的Maven插件
开始写代码。。。
Springboot2Application.java
[java] view plain copy
User.java
[java] view plain copy
UserControoler.java
[java] view plain copy
运行项目:
直接运行main方法或者使用maven命令: spring-boot:run
上面就是运行的结果。。
解释
@RestController注解:看看源码 其实就是 又封装了一层 将@Controller和@RsponseBody两个注解合在一块儿
这样一来应该对SpringBoot 也有了初步的认识。。。而且会简单的使用
在实际项目中,咱们通常会放置一些配置文件,这些配置文件是区分环境的,通常环境有dev,test,prep,prod,分别对应开发,测试,预发布,生产。那么在spring boot项目中如何实现不一样环境,使用不一样的配置文件呢。
第一步:定义好不一样环境的application.properties
application.properties 存放公用的一些配置。
以及最重要的配置 spring.profiles.active=@profiles.active@
application-dev.properties 对应开发环境
application-test.properties 对应测试环境
application-prep.properties 对应预生产环境
application-prod.properties 对应生产环境
第二步:pom中定义profile
第三步:maven命令打包
package -Dmaven.test.skip=true -Pdev
那么此时就会将application-dev.properties 和application.properties 的配置都打入包中了。
在此我向你们推荐一个架构学习交流群。交流学习群号:575745314 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
Actuator插件是SpringBoot原生提供的一个服务,能够经过暴露端点路由,用来输出应用中的诸多 端点信息。实战一下!
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>复制代码
启动Spring Boot应用程序以后,只要在浏览器中输入端点信息就能得到应用的一些状态信息。
经常使用端点列举以下,能够一个个详细试一下:
固然此时只能使用/health
和 /info
端点,其余由于权限问题没法访问。想访问指定端点的话能够在yml配置中添加相关的配置项,好比/metrics
端点则须要配置:
endpoints:
metrics:
sensitive: false复制代码
此时浏览器访问/metrics端点就能获得诸以下面所示的信息:
固然也能够开启所有端点权限,只需以下配置便可:
endpoints:
sensitive: false复制代码
于Actuator插件提供的监控能力毕竟有限,并且UI比较简陋,所以须要一个更加成熟一点的工具
SBA则是基于Actuator更加进化了一步,其是一个针对Actuator接口进行UI美化封装的监控工具。咱们来实验一下。
pom.xml中加入以下依赖:
而后在应用主类上经过加注解来启用Spring Boot Admin
启动程序,浏览器打开 localhost:8081
查看Spring Boot Admin主页面:
此时Application一栏空空如也,等待待监控的应用加入
pom.xml中加入如下依赖
而后在yml配置中添加以下配置,将应用注册到Admin服务端去:
Client应用一启动,Admin服务立马推送来了消息,告诉你AdminTest上线了:
此时去Admin主界面上查看,发现Client应用确实已经注册上来了:
点击最上方JOURNAL,会看到被监控应用程序的事件变化:
图中能够清晰地看到,应用从 REGISTRATION → UNKNOWN → UP 的状态跳转。
这样就将Actuator插件提供的全部端点信息在SBA中所有尝试了一遍。
在此我向你们推荐一个架构学习交流群。交流学习群号:575745314 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
默认状况下,Spring Boot的日志是输出到控制台的,不写入任何日志文件。
要让Spring Boot输出日志文件,最简单的方式是在application.properties配置文件中配置logging.path键值,以下:(日志文件为spring.log)
logging.path=/var/log
复制代码
二种方法是在application.properties配置文件中配置logging.file键值,以下:
logging.file=/var/log/myapp.log
复制代码
两种配置方法适用于开发阶段,对于部署则存在必定的问题。好比部署到不一样的环境,可能就存在须要修改application.properties文件的状况,这就意味着须要从新打包,再次部署,显得不便捷。
有鉴于此,Spring Boot提供了一种覆写application.properties配置文件中键值的方法,在命令行经过指定参数来实现覆写——在运行时把命令行参数看成标准的系统属性,以下:
java -jar -Dlogging.path=/tmp myapp.jar
复制代码
后,还能够在命令行调用Spring Boot的Maven插件时覆写这个值。可是,直接使用系统属性对于插件方式是无效的。须要使用run.jvmArguments参数来指定系统属性,设置想要的值:
mvn spring-boot:run -Drun.jvmArguments="-Dlogging.path=/tmp"复制代码