记Springboot中使用@Value出现的乌龙

先看一下代码:

server.port=8007
#mysql配置
url=jdbc:mysql://localhost:3306/lzy_zyg?useUnicode=true&characterEncoding=UTF-8
username=root
password=root

这是application.properties中填写的相关配置信息,其中mysql配置是作为外部配置信息来用的。

然后在需要的地方如下使用:

@Configuration
public class JfinalDb
{
    @Value("${url}")
    private String dbUrl;
    @Value("${username}")
    private String dbUName;
    @Value("${password}")
    private String dbPwd;
...
}

使用的时候出现很诡异的问题,那就是命名设置的username和password是对的,通过本地连接也是对的,但是总是报连接认证失败的错误,并且用户名也不是root。

最后我将dbUName打印出来发现,完全不是root,而是我的主机名!

所以这里,切记不要在application.properties文件中自定义名称username,因为你取不到你想要的结果。

### 回答1: @Value 注解是 Spring 框架用于获取配置文件的值的注解。它可以用来注入配置文件的值到 Bean 的属性。@Value 支持从环境变量、命令行参数和配置文件获取值。语法为:@Value("${propertyName}")。 ### 回答2: Spring Boot的@Value注解是用于注入配置文件的属性值的注解。它可以用于任何Spring Bean,并且可以使用SpEL表达式。常用来注入一些配置文件的属性值,比如数据库连接地址、用户名、密码等。这些属性值可以从application.properties(或application.yml)文件读取,也可以从环境变量或命令行参数读取。 @Value注解可以用于属性、方法、构造器等注入对象。对于属性注入,可以直接注入属性值或SpEL表达式,也可以注入一个BeanNameReadingPropertyResolver实例来动态读取配置文件的属性。对于方法注入,可以将属性值注入方法参数。 @Value注解还可以用于注入系统属性和环境变量。如果配置文件没有定义某个属性,可以通过这个注解来获取系统属性或环境变量的值。使用${...}语法来引用系统属性和环境变量时,在属性名之前加上“systemProperty.”或“systemEnvironment.”前缀。 除了可以读取配置文件的属性值,@Value注解还可以使用SpEL表达式来计算属性的值。表达式可以使用#{...}语法来定义。表达式使用的属性名和方法名必须与注入对象的属性名和方法名一致,否则会抛出运行时异常。可以在表达式使用Spring EL的所有功能,包括算术运算、逻辑运算、函数调用等。 总之,@Value注解是Spring Boot非常重要的一个注解,它可以方便地将配置文件的属性值注入到Bean,并且支持SpEL表达式,有助于提高代码的可读性和灵活性。 ### 回答3: 在使用Spring Boot开发时,我们可能需要在配置文件定义一些属性,比如数据库连接的用户名、密码等。而在Java类使用这些属性时,就需要用到@Value注解了。 @Value注解可以将配置文件定义的属性值注入到Java类的字段。注解的使用方式为在字段前加上@Value并指定属性的名称。例如,如果我们在配置文件定义了一个名为server.port的属性,那么可以在Java类使用@Value("${server.port}")来获取该属性的值,并将其注入到该类的字段。 在实际的开发,一般会将@Value注解用于Spring管理的Bean,以便更方便地对其进行配置和管理。此外,在Spring Boot还可以使用@ConfigurationProperties注解来指定一个类或Bean对应的配置文件前缀,并将相应的属性注入到该类或Bean。 需要注意的是,在使用@Value注解时,如果属性名称是从配置文件读取的,则需要在属性名称前加上“${”和“}”,以便告诉Spring容器该属性需要从配置文件获取。此外,还可以使用默认值来指定属性的值,例如@Value("${server.port:8080}"),表示如果配置文件没有定义该属性,则使用默认值8080。 总之,@Value注解是Spring Boot非常实用的注解,它可以帮助我们将配置文件的属性值注入到Java类,从而方便地进行开发、配置和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值