Spring boot之@Value注解的使用总结

Spring boot之@Value注解的使用总结

[email protected]

简单介绍

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:
这里写图片描述
内容为:

扫描二维码关注公众号,回复: 9231070 查看本文章
package spring_boot.demo.Hw.ManageConfig;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/*
 * Copyright Shanghai Hand Co. Ltd.
 *
 * @author [email protected]
 * @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中的内容即可。

发布了87 篇原创文章 · 获赞 0 · 访问量 5409

猜你喜欢

转载自blog.csdn.net/qq_44813090/article/details/104366878