SpringBoot注入配置文件的3种方法详解

下面就详细讲解一下SpringBoot注入配置文件的3种方法。

方法1:使用@Value注解

步骤1:在application.properties配置文件中添加属性

app.name=My App
app.version=1.0.0

步骤2:在代码中使用@Value注解进行注入

@RestController
public class MyController {

    @Value("${app.name}")
    private String appName;

    @GetMapping("/app")
    public String getAppName() {
        return appName;
    }
}

示例代码中,我们使用@Value注解注入了配置文件中的app.name属性,并在GetMapping注解的方法中返回了这个属性的值,访问/app接口即可查看返回结果。

方法2:使用@ConfigurationProperties注解

步骤1:创建配置类

@ConfigurationProperties(prefix = "app")
public class AppConfig {

    private String name;
    private String version;

    // getter and setter
}

步骤2:在application.properties配置文件中添加属性

app.name=My App
app.version=1.0.0

步骤3:在主类中使用@EnableConfigurationProperties注解开启配置类

@SpringBootApplication
@EnableConfigurationProperties(AppConfig.class)
public class MyAppApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyAppApplication.class, args);
    }

}

步骤4:在代码中使用@Autowired注入配置类

@RestController
public class MyController {

    @Autowired
    private AppConfig appConfig;

    @GetMapping("/app")
    public String getAppInfo() {
        return appConfig.getName() + " " + appConfig.getVersion();
    }
}

示例代码中,我们使用@ConfigurationProperties注解创建了一个配置类AppConfig,这个类中的name和version属性对应了配置文件中的app.name和app.version属性。然后在主类中使用@EnableConfigurationProperties注解开启了配置类,最后使用@Autowired注解注入了配置类,并在GetMapping注解的方法中返回了这些属性的值,访问/app接口即可查看返回结果。

方法3:使用@PropertySource和@Value注解

步骤1:在AppConfig类上添加@PropertySource注解

@Configuration
@PropertySource("classpath:app.properties")
@ConfigurationProperties(prefix = "app")
public class AppConfig {

    private String name;
    private String version;

    // getter and setter
}

步骤2:在代码中使用@Value注解进行注入

@RestController
public class MyController {

    @Value("${app.name}")
    private String appName;

    @GetMapping("/app")
    public String getAppName() {
        return appName;
    }
}

示例代码中,我们使用@PropertySource注解在AppConfig类上添加配置文件的位置,然后在代码中使用@Value注解进行注入。注意,这里要使用${}语法来引用配置文件中的属性名,并在GetMapping注解的方法中返回了这个属性的值,访问/app接口即可查看返回结果。

以上就是SpringBoot注入配置文件的3种方法详解,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot注入配置文件的3种方法详解 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 关于Go你不得不知道的一些实用小技巧

    关于Go你不得不知道的一些实用小技巧 Go语言是一种现代化的编程语言,强调简单性、可靠性和效率。在实际的开发过程中,许多人可能会遇到一些问题,下面介绍一些Go语言的实用小技巧,帮助你更好的解决问题。 实用技巧1:使用defer语句 Go语言中的defer语句可以用于在函数返回之前执行一些代码,你可以使用它来释放资源、记录日志和跟踪函数的执行过程。 func …

    other 2023年6月26日
    00
  • Android中使用TextToSpeech的方法

    下面是详细的“Android中使用TextToSpeech的方法”的完整攻略: 一、什么是TextToSpeech TextToSpeech是Android的一个类,可以使用这个类将文本转换为语音输出,支持多种语言,并且可以进行一些语音的设置,如语速、音调等。这个类非常有用,可以用于实现语音识别、语音导航、语音翻译等功能。 二、如何使用TextToSpeec…

    other 2023年6月27日
    00
  • vs2010打包安装包带数据库

    VS2010打包安装包带数据库 在软件开发过程中,经常需要将开发完成的程序打包成安装包进行发布。为了方便用户的安装,可以将程序的依赖项也打包进去,比如数据库。本文将介绍如何使用VS2010打包安装包并将数据库一起打包。 准备工作 在开始之前,需要安装VS2010和SQL Server 2008 R2(假设你的程序是基于该版本的数据库开发的)。同时,需要确保你…

    其他 2023年3月28日
    00
  • 从原理分析kotlin的延迟初始化:lateinitvar和bylazy

    Kotlin的延迟初始化 在Kotlin中,我们可以使用延迟初始化来推迟变量的初始化,直到我们需要使用它。Kotlin提供了两种延迟初始化的方式:lateinit var和by lazy。本攻略将详细讲解这两种方式的原理和使用方法,并提供两个示例来说明它们的用法。 lateinit var lateinit var是一种延迟初始化的方式,它可以用于推迟变量的…

    other 2023年5月9日
    00
  • java多线程编程之使用Synchronized块同步方法

    当涉及多个线程并发访问共享资源时,会出现线程安全问题。使用Synchronized关键字可以实现对共享资源的访问控制,防止并发下的线程安全问题。 Synchronized锁的分类 Synchronized锁一般主要有两种类型:对象锁和类锁。其中对象锁又分为synchronized方法锁和synchronized代码块锁。 对象锁之synchronized方法…

    other 2023年6月27日
    00
  • 无双大蛇3存档丢失怎么办 正式版继承神速版存档丢失解决方法

    问题描述 最近玩家们在玩《无双大蛇3》时反映,出现了存档丢失的情况。尤其是在正式版继承神速版存档时,存档容易出现问题。这对于已经投入了大量时间和精力的玩家来说,是比较糟糕的情况。那么,如果遇到这种情况,我们该如何解决呢? 解决方法 方案一:查找自身存储位置 第一种方法是玩家可以查找自身存储位置,看是否把存档存放到了另一个地方。 首先,我们需要打开“文件资源管…

    other 2023年6月27日
    00
  • windows中dos批处理之命令特殊符号通配符与转义符(推荐)

    以下是“Windows中DOS批处理之命令特殊符号通配符与转义符”的完整攻略。 一、特殊符号 在Windows的DOS批处理中,有一些特殊符号,它们可以用于执行一些特殊的操作。 1.管道符 管道符|可以将一个命令的结果输出作为另一个命令的输入,实现两个命令的组合,例如: dir | find /i "txt" 以上命令的意思是列出当前目录…

    other 2023年6月26日
    00
  • Android nonTransitiveRClass资源冲突问题浅析

    Android nonTransitiveRClass资源冲突问题浅析 在Android开发中,我们经常会遇到nonTransitiveRClass资源冲突的问题。这个问题通常发生在引入多个库或模块时,它们可能会包含相同的资源文件,导致编译时出现冲突。下面是对这个问题的详细分析和解决方法。 问题分析 当我们在项目中引入多个库或模块时,每个库或模块都会生成一个…

    other 2023年10月12日
    00
合作推广
合作推广
分享本页
返回顶部