当前位置: 首页 > news >正文

【Spring boot】Spring boot之@Value注解的使用总结---研读

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

简单介绍

Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西。因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置。Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序。

@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: 17412345678910

application-test.yml:

spring:
    profiles: test

user:
    userName: 王立国-test
    sex: 男
    age: 18
author:
    name: wlg-test
    height: 17412345678910

application-stage.yml:

spring:
    profiles: stage

user:
    userName: 王立国-stage
    sex: 男
    age: 18
author:
    name: wlg-stage
    height: 17412345678910

每个配置文件都说明了自己的spring.profiles名称,然后其他内容稍有不同以示区分。

使用@Value注解

 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如下图:

这里写图片描述

这里写图片描述

其他方法读取配置文件

这里写图片描述

内容为:

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中的内容即可。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【mysql】MySQL 面试,必须掌握的 8 个知识点
  • 【大厂面试】面试官看了赞不绝口的Redis笔记
  • 【C/C++】理解C和C++中的左值和右值
  • 【MQTT】MQTT C语言客户端实现/ MQTT嵌入式客户端
  • 【VS】VS工程设置(包含目录、库目录、附加包含目录、附加库目录、附加依赖项)等...
  • 【linux】最小测试工程miniTest
  • 【VS】判断dll/lib是32/64位|查看lib是导入库/静态库的方法
  • 【C++】C++写后端程序
  • 【C++】C++ 知识点100题
  • 【架构】傻瓜都能看懂的高并发量服务器架构
  • 【mySQL】MySQL数据库知识整理
  • 【mySQL】Mysql InnoDB 共享表空间和独立表空间 区别和优缺点
  • 【算法】程序的时间复杂度计算
  • 【算法】CRC、MD5、SHA1区别
  • 【libevent 】libevent 多线程实现高并发
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • ES6系统学习----从Apollo Client看解构赋值
  • JavaScript学习总结——原型
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • orm2 中文文档 3.1 模型属性
  • spring-boot List转Page
  • Tornado学习笔记(1)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 深入浏览器事件循环的本质
  • 使用parted解决大于2T的磁盘分区
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 跳前端坑前,先看看这个!!
  • 写给高年级小学生看的《Bash 指南》
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # linux 中使用 visudo 命令,怎么保存退出?
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #pragma multi_compile #pragma shader_feature
  • (30)数组元素和与数字和的绝对差
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Java入门)抽象类,接口,内部类
  • (Oracle)SQL优化技巧(一):分页查询
  • (二)斐波那契Fabonacci函数
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (转)http-server应用
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .gitattributes 文件
  • .NET Core中Emit的使用
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net 托管代码与非托管代码
  • .net2005怎么读string形的xml,不是xml文件。