目前没有系统学习过 Spring 框架,参与工做时,直接参与到了 Spring Boot 项目的开发。目前还比较菜,因此,你要是和我同样,不妨也跳过 Spring 框架的学习,直接学习 Sring Boot。html
官方文档 的一段介绍:前端
Spring Boot makes it easy to create stand-alone, production-grade Spring-based Applications that you can run. We take an opinionated view of the Spring platform and third-party libraries, so that you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.java
You can use Spring Boot to create Java applications that can be started by using java -jar or more traditional war deployments. We also provide a command line tool that runs “spring scripts”.web
大致意思是说,Spring Boot 能够轻松建立能够运行的独立的,基于生产级 Spring 的应用程序。这个框架简化了咱们 Spring 的配置。可使用 Spring Boot 建立 Java 应用,只须要使用 java -jar
或 war
包部署方式就能够启动。也内嵌了 Tomcat
,在开发时无需以 war
包也能够运行应用。面试
下面是本文编写时,我机器的环境:redis
本文目的是建立一个基本的 RESTful Web 服务。建立 Spring Boot 服务的方式主要有两种:spring
Spring Initializr
建立,我我的比较倾向这种方式,方便快捷;下面主要介绍 IDEA 如何初始化一个 Sring Boot 项目:mongodb
1.File-New-Porject,选择 Spring Initializr
,选择 SDK 版本;docker
2.输入项目的元数据信息,关系到项目的路径、 pom
文件中项目的 Maven 坐标( GAV
),;数据库
3.选择须要的 Maven 依赖,这里 Spring Boot 版本,我选择了 2.1.6
版本;
4.最后一步指定项目存放位置;
src/main/java
中有项目代码文件,根目录下是入口类: SpringBootHelloWorldApplication
类。 @SpringBootApplication
注解,这是整个 Spring Boot 的核心注解,它的目的就是开启 Spring Boot 的自动配置。src/main/resources
下是配置文件: application.properties
src/test/
下的测试入口:Chapter1ApplicationTests一般在项目中对外提供的 API 都会放在叫作 Controller
的包下。
这里向你们推荐一个测试交流圈q裙:790047143。
咱们建立一个 Controller
的包,并添加一个叫作 HelloWorld
的类:
@RestController public class HelloWorld { @GetMapping("/hello") public String sayHello() { return "Hello World"; } }
@RestController
注解加在这个类上,使之变为一个 Controller
这是咱们启动项目,即可以经过地址 localhost:8080/hello
或 127.0.0.1:8080/hello
看到 sayHello
函数执行的内容。
查看控制台的输出,咱们能够知道 Spring Boot 项目启动时,默认的端口是 8080
官方文档中有关于 Profile 的描述。 Prorile
有 轮廓、外形、简况
的含义,这里我就把它理解为「配置描述」好了。
在实际项目中,生产、beta 不一样环境将采用不一样的配置,好比数据库配置等等。这时候,咱们只须要建立多分 Profile 文件便可。
除了 application.properties
文件,配置文件还能够采用下面的命名规则 application-{profile}.properties
。Environment 中具备一组可选的值。若是没有设置须要激活什么配置文件,就默认激活 default
配置,即 application-default.properties
。
指定的配置文件都是从同一个位置被激活,即从标准的配置文件 application.properties
。
若是指定了多个配置文件,采起 last-win
策略,即「最后获胜侧率」。这句话意思是什么呢,就是说,在你的 application.properties
中若是指定了激活好几个配置文件,那么,最后指定的那个配置文件才会生效。
咱们分别建立两个环境配置文件:
application-dev.properties
测试环境 server.port=8081
application-prod.properties
生产环境 #server.port=8082
applcation.properties
公共配置文件。激活 Dev 配置文件,须要在 application.properties
设置:
#这里定义8080主要是为了看端口设置是否会被 dev 覆盖 server.port=8080 spring.profiles.active=dev
这时候启动程序时,咱们查看控制台就可看到 Dev
环境被激活了,应用端口是 8081
。这时候观察 application.properties
的端口设置是否会会生效。通过测试能够发现,此时 8080
端口被 Dev
的配置覆盖了。
接着,咱们激活 Prod
配置,注意,此时我将 Prod
端口配置注释掉了,这时候观察 application.properties
的端口设置是否会会生效。通过测试能够发现,此时 8080
端口生效了。
除了上面在 application.properties
指定激活的配置外,还能够在 Envirionment 中设置相关环境变量激活:
通过测试,我在 Environment 中设置环境变量激活了 Dev
的配置,而后在 application.properties
激活的是 Prod
的配置,最终控制台日志显示, Dev
配置被激活。
若是采用 mvn clean package
打出 jar
包,那么可使用以下方式指定 Profile:
java -jar spring-boot-hello-world-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
咱们能够在 Profile 中指定一些 propety
的值,在程序中能够获取到。
在 application-dev.properties
定义以下:
server.port=8081 author.name=Michael
接着,咱们在 Controller 类中使用 @Value
注,便可获取到这个属性:
@RestController public class HelloWorld { @Value(value = "${author.name}") private String authorName; @GetMapping("/hello") public String sayHello() { return "Hello World By " + authorName; } }
Banner 就是指咱们在启动应用时控制台一开始打印的那个内容,默认是打印 Spring Boot
。
src/main/resorces
下新建一个名为 banner.txt
的内容;banner.txt
。个性化 Banner 来源:
送一个有趣的 Banner:
//////////////////////////////////////////////////////////////////// // _ooOoo_ // // o8888888o // // 88" . "88 // // (| ^_^ |) // // O\ = /O // // ____/`---'\____ // // .' \\| |// `. // // / \\||| : |||// \ // // / _||||| -:- |||||- \ // // | | \\\ - /// | | // // | \_| ''\---/'' | | // // \ .-\__ `-` ___/-. / // // ___`. .' /--.--\ `. . ___ // // ."" '< `.___\_<|>_/___.' >'"". // // | | : `- \`.;`\ _ /`;.`/ - ` : | | // // \ \ `-. \_ __\ /__ _/ .-` / / // // ========`-.____`-.___\_____/___.-`____.-'======== // // `=---=' // // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // // 佛祖保佑 永不宕机 永无BUG // ////////////////////////////////////////////////////////////////////
Spring Boot 提供了不少”开箱即用“的依赖模块,都是以 spring-boot-starter-xx
做为命名的。下面列举一些经常使用的模块:
当请求来了,controller 就会将相应的请求分发到相应的 service层,在 service 层中再调用 dao 层进行数据库交互。这里的 dao 层其实就是以前的 model 层,封装了对数据库的操做。这样一来,就把业务处理逻辑从 controller 中分离出来,从而实现了解耦。
感谢您的观看,若有不足之处,欢迎批评指正。
本次给你们推荐一个免费的学习群,里面归纳Java架构/分布式/微服务/docker/高性能高并发以及面试资源等。对Java架构感兴趣的程序猿,欢迎加入Q群:790047143,无论你是刚入行得仍是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时天天更新视频资料。 最后,祝你们早日学有所成。