Spring boot之@Value注解的使用总结 外部配置文件中的属性值注入到类属性中

原文链接:https://blog.csdn.net/hunan961/article/details/79206291

总结: 把配置文件属性信息写到/changhe/src/main/resources/application.yml文件中,

model.path: D:\\eclipse-workspace\\my-spring-security\\src\\main\\resources\\myfile\\群众选择号码信息.xls   

之后写需要引用的属性的类中添加value属性值类如:


@Component("modelConfig")
public class ModelConfig {

	@Value("${model.path}")
	private String path;

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

}

就可以引用到属性了。

详细一点可以参考如下:

 

简单介绍
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";
    }
}
1
2
3
4
5
6
7
8
9
@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
1
2
3
4
5
6
7
8
9
10
application-test.yml:

spring:
    profiles: test

user:
    userName: 王立国-test
    sex: 男
    age: 18
author:
    name: wlg-test
    height: 174
1
2
3
4
5
6
7
8
9
10
application-stage.yml:

spring:
    profiles: stage

user:
    userName: 王立国-stage
    sex: 男
    age: 18
author:
    name: wlg-stage
    height: 174
1
2
3
4
5
6
7
8
9
10
每个配置文件都说明了自己的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";
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
可以看得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;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
就是通过这种方法把配置文件中的author的信息注入到service实现类中,然后返回到页面上的

另外还有方法读取配置文件中的内容,这里就不再记录了

banner的使用
最后这里记录一下banner的使用 

如图在项目启动时,让这块区域风骚起来。首先给个网址: 
http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20 
在中间那块区域输入你想要的文件,还可以选择字体等等,然后把形成的图像粘贴复制到一个txt中,取名banner.txt,然后把它放到resource目录下,之后启动项目就有了,每次要更换团就更换banner.txt中的内容即可。
--------------------- 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值