写在前面:从2018年底开始学习SpringBoot,也用SpringBoot写过一些项目。现在对学习Springboot的一些知识总结记录一下。如果你也在学习SpringBoot,可以关注我,一起学习,一起进步。
相关文章:
【Springboot系列】Springboot入门到项目实战
目录
在application.properties文件中设置属性值
SpringBoot介绍
简介
SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
特点
- SpringBoot是伴随着Spring4.0诞生的,继承了Spring框架原有的优秀基因。
- 遵循“约定优先于配置”的原则,使用SpringBoot只需要很少的配置,大部分的时候直接使用默认的配置即可。
- 对主流开发框架无配置集成,自动整合第三方框架。
- 可独立运行Spring项目,SpringBoot可以以jar包的形式独立运行。使用java -jar命令或者在项目的主程序中执行main函数就可以成功运行项目。
- 内嵌Servlet容器,可以选择内嵌Tomcat、Jetty等Web容器,无须以war包形式部署项目。
- 提供starter简化Maven配置,基本上可以做到自动化配置,高度封装,开箱即用。
- SpringBoot会根据项目依赖来自动配置Spring框架,极大减少了项目所使用的配置。
- SprintBoot提供了准生产环境的引用监控。
- 无代码生成和XML配置,纯java的配置方式,很简单,很方便。
解决的问题
SpringBoot的出现带来了的优点:
- 使编码变得简单:推荐使用注解。
- 使配置变得简单:自动配置、快速构建项目、快速集成新技术的能力。
- 使部署变得简单:内嵌Tomcat、Jetty等Web容器。
- 使监控变得简单:自带项目监控。
搭建SpringBoot项目
在搭建SpringBoot项目之前,需要先安装配置一下Maven,需要了解Maven安装与配置的请移步:Maven安装配置。
新建SpringBoot项目有两种方式
第一种:在编辑器中新建
这里使用的编辑器是Idea,点击 File --> new --> project --> Sping Initializr,选择 jdk 版本,然后点击【Next】
然后修改一下项目相关的信息:
勾选spring-web依赖模块,添加依赖,也可以项目新建完成后添加。
选择项目存放路径,及项目名。之后点击finish新建项目就完成了。
第二种:在Spring官网新建,之后导入到编辑器中
这种方法一般情况是不会用的,毕竟麻烦一些。可以了解一些。
首先打开Spring新建项目网页:https://start.spring.io/,打开后如下图(在该页面中添加项目信息):
填写好项目配置信息后点击按钮Explore - Ctrl + Space下载项目,之后导入到编辑器中即可。
SpringBoot入门
项目结构
项目结构还是看上去挺清爽的,少了很多配置文件。
- DemoApplication: 一个带有 main() 方法的类,用于启动应用程序
- DemoApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文
- application.properties:一个空的 properties 文件,可以根据需求添加配置属性
- pom.xml: Maven 构建说明文件
pom.xml依赖配置文件
pom.xml中有我们刚才勾选的spring-web依赖模块。如果没有勾选,可以自己添加。
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--starter-web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
测试控制器
在【com.mcy.demo】包下新建一个【controller】包,【com.mcy.demo.controller】包下新建一个【Indexcontroller.java】文件:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 测试控制类
*/
@RestController
public class Indexcontroller {
//请求,映射路径
@RequestMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}
@RestController 注解: 该注解是 @Controller 和 @ResponseBody 注解的合体版
运行项目
我们可以回到 DemoApplication启动类中,然后右键点击运行:
也可以直接点击工具栏上的运行图标运行。
注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat
等待一会儿就会看到控制台输出以下信息,说明运行成功。
运行成功后,浏览器访问 “http://localhost:8080/hello
” 地址。
可以看到页面成功显示出我们返回的信息。
应用入口类 DemoApplication.java
Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的 Java应用的入口方法,方法名上有一个@SpringBootApplication注解。
@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 注解也可以使用这三个注解代替。
其中,@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。
Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 com.mcy 包)
application.properties配置文件
Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录下。
Spring Boot 不仅支持常规的 properties 配置文件,还支持 yml 语言的配置文件。yml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。
Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。
修改 properties 配置文件实例:
打开 resources 下的 application.properties
#配置端口和访问时的项目名
server.port=80
server.servlet.context-path=/demo
在这里我们可以设置访问的端口,将端口设置为 80 (默认端口为8080) ,并将默认的访问路径从 “/” 修改为 “/demo” 时,再访问 http://localhost/demo 是什么都没有的,此时要访问 hello 是要使用 http://localhost/demo/hello
在application.properties文件中设置属性值
#配置端口和访问时的项目名
server.port=80
server.servlet.context-path=/demo
#设置属性值
csdnUrl: https://blog.csdn.net/qq_40205116
在然后使用在我们的 Indexcontroller.java 类中使用 @Value 来获取配置属性:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 测试控制类
*/
@RestController
public class Indexcontroller {
// 获取.properties 文件中值
// 获取 csdnUrl
@Value("${csdnUrl}")
private String csdnUrl;
//请求,映射路径
@RequestMapping("/hello")
public String hello() {
return " CSDN 博客:"+ csdnUrl;
}
}
重启 Spring Boot ,输入地址: http://localhost/demo/hello,能看到对应的效果:
有什么不足之处,欢迎大家指出,期待与你的交流。