-
@Value:
- 这个注解用于注入字面量或来自属性文件的值。
- 它可以用于字段、构造函数参数、方法参数等。
- 例如,
@Value("${property.name}")
会注入名为property.name
的属性值。
-
@ConfigurationProperties:
- 这个注解用于将配置属性映射到一个POJO(Plain Old Java Object)。
- 它通常与
@EnableConfigurationProperties
注解一起使用,后者用于启用配置属性的支持。 - 通过使用
@ConfigurationProperties(prefix = "some.prefix")
,你可以将配置属性映射到具有相应前缀的字段上。
-
@PropertySource:
- 这个注解用于指定Spring框架应该从哪个属性源加载属性。
- 它通常用于指定一个属性文件的位置,例如
@PropertySource("classpath:application.properties")
。 - 这允许Spring框架从指定的文件中读取属性,并使用
@Value
或@ConfigurationProperties
注解将它们注入到Spring管理的bean中。
@Value 直接使用
不支持驼峰
被static修饰的变量通过@Value会注入失败。
@Value("${name}")
private String name;设置默认值
@Value(value = "${yu.test.userName:yu}")
private String userName;注入bean 通过这种方式,可以注入id为roleService的bean。
@Value("#{roleService}")
private RoleService roleService;spring的EL表达式 取随机值
@Value("#{T(java.lang.Math).random()}")
private double randomValue;
@ConfigurationProperties +@Data
支持驼峰
@ConfigurationProperties(prefix = "yu.test")
public class UserController {private String userName;//必须加get/set
}
@PropertySource+@Value
@Configuration
@PropertySource("classpath:application.properties")
public class AppConfig {@Value("${app.name}")private String appName;@Value("${app.version}")private String appVersion;@Beanpublic MyApp myApp() {return new MyApp(appName, appVersion);}
}
注意 properties 会出现乱码 yml不会