要在Eclipse里使用SpringBoot,首先要安装下STS插件
注意:STS插件运行必须是JDK1.8 否则会出现安装失败的情况;
创建SpringBoot项目创建SpringBoot项目pom.xml文件第一行报错:Non-parseable POM
或者run as 没有Spring Boot App-->解决方法
参考-->配置STS插件两种方法
插件安装完毕,然后我们来新建一个SpringBoot项目
新建 选择 Spring Boot->Spring Starter Project
点击“Next”,显示
到了配置依赖的界面,暂时不需要用到其他的,仅选择一个Web依赖即可
然后点击Finish完成。
HelloWorldApplication是启动类,我们右击Run As 选择 Spring Boot app
我们浏览器输入:http://localhost:8080/
出现这个 说明项目启动成功;
我们现在配置一个HelloWorld请求
在com.exmple.demo包下,新建一个HelloWorldController类
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/HelloWorld")
public String say(){
return "HelloWorld";
}
}
然后我们重新启动HelloWorldApplication类
请求 http://localhost:8080/HelloWorld
我们一个简单的Spring Boot工程已经创建出来了,并且成功的从浏览器中访问到了.
当我们修改文件和创建文件时,都需要重新启动项目。这样频繁的操作很浪费时间,配置热部署可以让项目自动加载变化的文件,省去的手动操作。
在 pom.xml 文件中添加如下配置:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
provided
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-devtools
true
true
org.springframework.boot
spring-boot-maven-plugin
true
修改Banner
我们在启动Spring Boot项目的时候,在控制台会默认输出一个启动图案,如下
当然,这个图案如果你需要的话是可以自己修改的,修改方式很简单:
1.在src/main/resources下新建一个banner.txt文档
2.通过点击网站生成需要的字符,将字符拷贝到步骤1所创建的txt文档中,比如我这里为springboot生成字符,如下:
来个霸气的直接复制到banner.txt即可:
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永无BUG
点击Select&Copy按钮,将这个字符拷贝到txt文档中,然后再启动项目,这个时候控制台输出的文本就会自动改变,如下:
Spring Boot使用一个全局的配置文件application.properties或者application.yml,配置文件放在src/main/resources目录下。properties是我们常见的一种配置文件,Spring Boot不仅支持properties这种类型的配置文件,也支持yaml语言的配置文件,我这里以properties类型的配置文件为例来看几个案例。
1.修改Tomcat默认端口和默认访问路径
Tomcat默认端口是8080,我将之改为8081,默认访问路径是http://localhost:8080,我将之改为http://localhost:8081/hello,我们来看看这两个需求要怎么样通过简单的配置来实现。
很简单,在application.properties文件中添加如下代码:
server.servlet.context-path=/hello
server.port=8081
如果我们使用了Spring Boot,这项工作将会变得更加简单,我们只需要在application.properties中定义属性,然后在代码中直接使用@Value注入即可。
如下:
book.author=罗贯中
book.name=三国演义
book.pinyin=sanguoyanyi
我这里专门设置了中文,因为中文不做特殊处理会乱码,处理方式为继续在application.properties中添加如下代码:
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
然后在eclipse中右击项目->Properties->Resource->Other,将编码各式设为“UTF-8”
然后在变量中通过@Value直接注入就行了,如下:
@RestController
public class HelloWorldController {
/*@RequestMapping("/HelloWorld")
public String say(){
return "HelloWorld";
}
@RequestMapping("/HelloWorld2")
public String say2(){
return "HelloWorld2";
}*/
@Value(value = "${book.author}")
private String bookAuthor;
@Value("${book.name}")
private String bookName;
@Value("${book.pinyin}")
private String bookPinYin;
//修改index方法,使之返回这些值:
@RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
public String index(){
return"Hello Spring Boot! The BookName is "+bookName+";and Book Author is "+bookAuthor+";and Book PinYin is "+bookPinYin;
}
}
刚刚说的这种方式我们在实际项目中使用的时候工作量略大,因为每个项目要注入的变量的值太多了,这种时候我们可以使用基于类型安全的配置方式,
就是将properties属性和一个Bean关联在一起,这样使用起来会更加方便。
1.创建新的配置文件books.properties然后定义属性直接复制application.properties修改名称
books.name=红楼梦
books.author=曹雪芹
books.price=28
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
books.name=\u7EA2\u697C\u68A6
books.author=\u66F9\u96EA\u82B9
books.price=28
2.在com.example.demo下创建BookBean实体类,并注入properties文件中的值
@Component注解目的是为了这个JavaBean可以被SpringBoot项目启动时候被扫描到并加载到Spring容器之中,
@PropertySource这个注解专门用来加载指定位置的properties文件
@ConfigurationProperties绑定专用注解它的作用就是将指定前缀配置项的值与JavaBean的字段绑定prefix是指前缀
代码如下:
package com.example.demo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:books.properties")
@ConfigurationProperties(prefix = "books")
public class BookBean {
private String name;
private String author;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
3.添加路径映射
在Controller中添加如下代码注入Bean:
@Autowired
private BookBean bookBean;
@RequestMapping("/books")
public String book() {
return"Hello Spring Boot! The BookName is "+bookBean.getName()+";and Book Author is "+bookBean.getAuthor()+";and Book price is "
+bookBean.getPrice();
}
运行效果如下:
application.properties 是 springboot 在运行中所需要的配置信息。
全局Profile配置我们使用application-{profile}.properties来定义,然后在application.properties中通过spring.profiles.active来指定使用哪个Profile
当我们在开发阶段,使用自己的机器开发,测试的时候需要用的测试服务器测试,上线时使用正式环境的服务器。
这三种环境需要的配置信息都不一样,当我们切换环境运行项目时,需要手动的修改多出配置信息,非常容易出错。
为了解决上述问题,springboot 提供多环境配置的机制,让开发者非常容易的根据需求而切换不同的配置环境。
在 src/main/resources 目录下创建三个配置文件:
application-dev.properties:用于开发环境
application-test.properties:用于测试环境
application-prod.properties:用于生产环境
内容分别为
server.port=8080
server.port=8081
server.port=8082
我们可以在这个三个配置文件中设置不同的信息,application.properties 配置公共的信息。
在 application.properties 中配置:
spring.profiles.active=dev
#spring.profiles.active=test
#spring.profiles.active=prod
演示如下: