Spring boot之@Value注解的使用总结
liguo.wang@hand-china.com
简单介绍
Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西。因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置。Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序。
开始
这里使用Intellij IDEA作为开发工具,理由就不说了,因为它强大好用。
首先打开Intrllij,file->new->project,然后选择Spring 项目,如图
点击下一步,填写Group和Artifact
然后选择web,勾选web,再next,再finish
建好项目后,可以建个包,比如controller层,在里面新建一个类,写个方法返回helloworld到前端,然后再启动spring boot项目,浏览器输入默认网址:localhost:8080
@RestController
@RequestMapping("/")
public class HelloWorld {
@RequestMapping("/")
public String HelloWorld(){
return "hello world";
}
}
@Value注解使用记录
配置文件application.yml
这里通过@Value注解注入配置文件中的内容进行讲解,比如我们开发项目时常常会有几种环境,比如dev环境,test环境等等,不同的环境某些参数就会不一样,配置文件不一样,这个时候就会用到@value注解了
首先:如图,写了四个配置文件(这里使用yml文件),注意命名规范:application-xxx.yml 因为项目去默认加载配置文件的时候会有这个格式要求。
如图,application.yml中的内容为:这里指定了8090的端口,不指定的话就是8080的默认端口,然后指定了运行环境为:stage环境,这时启动项目就会去加载application-stage.yml文件。
当然,我们也可以用下图的方式指定运行环境:
接下来看看其他三个配置文件中的内容:
application-dev.yml:
spring:
profiles: dev
user:
userName: 王立国-dev
sex: 男
age: 18
author:
name: wlg-dev
height: 174
application-test.yml:
spring:
profiles: test
user:
userName: 王立国-test
sex: 男
age: 18
author:
name: wlg-test
height: 174
application-stage.yml:
spring:
profiles: stage
user:
userName: 王立国-stage
sex: 男
age: 18
author:
name: wlg-stage
height: 174
每个配置文件都说明了自己的spring.profiles名称,然后其他内容稍有不同以示区分。
使用@Value注解
controller层代码:
@RestController
@RequestMapping("/")
public class HelloWorld {
@Autowired
private IHelloWorldService helloWorldService;
@RequestMapping("/")
public String HelloWorld(){
String msg = helloWorldService.getMessage();
return msg;
}
@RequestMapping("/hello2")
public String HelloWorld2(){
return "hello world2";
}
@RequestMapping("/hello3")
public String HelloWorld3(){
return "hello world3";
}
}
service实现类代码:
@Service
public class HelloWorldServiceImpl implements IHelloWorldService {
@Autowired
private MyConfig myConfig;
@Value(value = "${user.userName}")
private String userName;
@Value("${user.sex}")
private String sex;
@Value("${user.age}")
private String age;
@Override
public String getMessage() {
return "姓名:"+userName+" 性别:"+sex+" 年龄:"+ age +" 作者&身高:"+myConfig.getName()+" "+myConfig.getHeight();
}
}
可以看得value注解的使用方式:@Value(value = “${user.userName}”),这个时候就会把配置文件里的user.userName的值赋值给变量userName
可以预测到,当使启动不同环境的项目时,其userName,sex,age是不同的
这是在application.yml中写了stage环境启动项目后页面的内容
然后还有dev,test如下图:
其他方法读取配置文件
比如写一个类MyConfig:
内容为:
package spring_boot.demo.Hw.ManageConfig;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/*
* Copyright Shanghai Hand Co. Ltd.
*
* @author liguo.wang@hand-china.com
* @date 2018/1/26 10:19
* @version: 1.0
* @description
*/
//加上注释@Component,可以直接在其他地方使用@Autowired来创建其实例对象
@Component
@ConfigurationProperties(prefix = "author")
public class MyConfig {
private String name;
private String height;
public String getName() {
return name;
}
public MyConfig setName(String name) {
this.name = name;
return this;
}
public String getHeight() {
return height;
}
public MyConfig setHeight(String height) {
this.height = height;
return this;
}
}
就是通过这种方法把配置文件中的author的信息注入到service实现类中,然后返回到页面上的
另外还有方法读取配置文件中的内容,这里就不再记录了
banner的使用
最后这里记录一下banner的使用
如图在项目启动时,让这块区域风骚起来。首先给个网址:
http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20
在中间那块区域输入你想要的文件,还可以选择字体等等,然后把形成的图像粘贴复制到一个txt中,取名banner.txt,然后把它放到resource目录下,之后启动项目就有了,每次要更换团就更换banner.txt中的内容即可。