专栏首页Java后端技术栈cwnait【注解驱动时代】细说@Value注解

【注解驱动时代】细说@Value注解

通过@Value将外部配置文件的值动态注入到Bean中。配置文件主要有两类:

  1. application.properties/application.yml。这两个配置文件在spring boot启动时默认加载此文件
  2. 自定义属性文件。自定义属性文件通过@PropertySource加载。@PropertySource可以同时加载多个文件,也可以加载单个文件。如果相同第一个属性文件和第二属性文件存在相同key,则最后一个属性文件里的key启作用。

源码

//用于方法、参数、注解
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Value {
String value();

}

示例

第一种默认配置文件

在application.properties文件中配置好

user.address=Beijing

java代码中

@Controller
@RequestMapping("/user")
public class ControllerDemo {

    @Value("${user.address}")
    private String userAddress;

    @Resource
    private UserServiceImpl userService;

    @RequestMapping(value = "/index")
    @ResponseBody
    public String index() {
        //下面打印出:Beijing
        System.out.println(userAddress);
        userService.test();
        return "ok";
    }
}

另外application.yml 获取方式一样,只是两种配置文件的样式不同。注意:yml文件中的冒号后面要有空格,冒号+空格=properties文件中的点.。

第二种自定义配置文件

新建Myconfig.properties,放置于resources目录下,配置项如下:

net.address=www.baidu.com

net.address=www.sina.com

java代码

@Component
@PropertySource({"classpath:/Myconfig.properties"})
public class ConfigurationFileInject {
    @Value("${net.address}")
    private String userLog;

    public String getUserLog() {
        return this.userLog;
    }
}

@Controller
@RequestMapping("/user")
public class ControllerDemo {
    @Resource
    private ConfigurationFileInject configurationFileInject;
    @RequestMapping(value = "/index")
    @ResponseBody
    public String index() {
        String userBlog=configurationFileInject.getUserLog();
        //下面打印出:www.sina.com
        System.out.println(userBlog);
        return "ok";
    }
}

通常用来获取配置文件中的配置项。

本文分享自微信公众号 - Java后端技术栈(t-j20120622),作者:lawt

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【刨根问底】java注解--上

    从JDK1.5开始,Java增加了对元数据的支持,也就是Annotation,首先说明注释和注解不是同一回事,是有区别的。本次分享的注解,其实就是代码里的特色标...

    用户4143945
  • 必须掌握【分布式锁】三种实现方式

    我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug!

    用户4143945
  • 徒手撸一个 Spring Boot 中的 Starter ,解密自动化配置黑魔法!

    我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中。Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹...

    用户4143945
  • [享学Eureka] 九、远程通信模块:使用TransportClientFactory构建底层请求客户端完成服务注册、服务下线

    代码下载地址:https://github.com/f641385712/netflix-learning

    YourBatman
  • Spring Cloud Gateway 扩展支持多版本控制及灰度发布

    什么是灰度发布,概念请参考,我们来简单的通过下图来看下,通俗的讲: 为了保证服务升级过程的平滑过渡提高客户体验,会一部分用户 一部分用户递进更新,这样生产中会同...

    冷冷
  • JDK 8 新特性 之 Lambda表达式

    Jacob丶
  • 前端不止:请告诉我,你要什么样的图标

    有一个英语成语叫做一画胜千言(A picture is worth a thousand words),不知道大家有没有听过?它是指的是一张静态的图片就可表达一...

    ThoughtWorks
  • Flink中API使用详细范例--window

    --------------------------------------------------------------- 12月10号 ---------...

    小勇DW3
  • 不了解这 12 个语法糖,别说你会 Java!

    本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,...

    Java技术江湖
  • 不懂这12个语法糖,别说你会Java!

    本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,...

    Java技术江湖

扫码关注云+社区

领取腾讯云代金券