Spring 获取属性值
来源:互联网 发布:财达大智慧软件下载 编辑:程序博客网 时间:2024/06/05 18:38
在 Spring 中,处理外部值有两种方式:
(1)使用 @PropertySource 注解和 Environment 类;
(2)使用 @Value 注解和属性占位符
一. 使用 @PropertySource 注解和 Environment 类
@Configuration@ComponentScan("com.shenjy")@PropertySource("classpath:/application.properties") //指定属性源public class PlaceHolderConfig { @Autowired private Environment env; @Bean public DataSource dataSource() { DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(env.getProperty("spring.datasource.url")); datasource.setUsername(env.getProperty("spring.datasource.username")); datasource.setPassword(env.getProperty("spring.datasource.password")); datasource.setDriverClassName(env.getProperty("spring.datasource.driverClassName"));return datasource;}}
如果需要注入非 String 类型的属性值,则可以使用 Environment 类的 getProperty() 方法的另一种重载方式,代码如下:
datasource.setTestWhileIdle(env.getProperty("spring.datasource.testWhileIdle", Boolean.class));datasource.setInitialSize(env.getProperty("spring.datasource.initialSize", Integer.class));
二. 使用 @Value 注解和属性占位符
@Configuration@ComponentScan("com.shenjy")@PropertySource("classpath:/application.properties")public class ValueConfig {@Value("${spring.datasource.url}")private String dbUrl;@Value("${spring.datasource.username}")private String username;@Value("${spring.datasource.password}")private String password;@Value("${spring.datasource.driverClassName}")private String driverClassName;@Value("#{T(java.lang.Integer).parseInt('${spring.datasource.initialSize}')}")private int initialSize;@Value("#{T(java.lang.Boolean).parseBoolean('${spring.datasource.testWhileIdle}')}")private boolean testWhileIdle;@Bean //声明其为Bean实例@Primary //在同样的DataSource中,首先使用被标注的DataSourcepublic DataSource dataSource(){ DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(dbUrl); datasource.setUsername(username); datasource.setPassword(password); datasource.setDriverClassName(driverClassName); datasource.setInitialSize(initialSize); datasource.setTestWhileIdle(testWhileIdle); return datasource;}@Beanpublic static PropertySourcesPlaceholderConfigurer propertyConfig() { PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); configurer.setLocation(new ClassPathResource("application.properties")); return configurer;}}
使用属性占位符时,需要手动添加 PropertySourcesPlaceholderConfigurer bean,它可以基于 Spring Environment 及其属性源来解析占位符。
当需要类型转换时,目前自己知道的就是通过 Spring 表达式语言进行类型转换,如果还有其他比较简单的方式,麻烦指教下。
阅读全文
0 0
- Spring 获取属性值
- Spring PropertyPlaceholderConfigurer获取属性文件值
- Spring @Value注入属性获取不到值
- 获取spring中的用户属性
- 将属性文件交给spring管理,从spring容器中获取属性文件的值
- spring mvc Controller中使用@Value无法获取属性值
- Spring 依赖注入:获取properties文件中属性值
- spring mvc,在controller中获取属性文件的值
- spring mvc Controller中使用@Value无法获取属性值
- Spring中获取外部配置文件中的属性值
- spring aop 获取拦截类中的属性的值
- @Value spring 注解 获取*.properties 的属性值
- spring mvc controller中获取属性文件(properties)的值
- spring mvc controller中获取属性文件(properties)的值
- Spring学习之获取其他Bean的属性值(PropertyPathFactoryBean)
- Spring启动时获取自定义注解的属性值
- spring boot 获取properties 属性值 多种方式
- 获取spring中配置的properties属性名和属性值
- effective c++条款总结
- 数据仓库学习笔记01
- BZOJ 1007-水平可见直线
- Markdown语言详解
- PAT--1052. Linked List Sorting
- Spring 获取属性值
- WSGI学习记录
- Datacamp-python-Dictionaries
- Android 计算软键盘高度
- J
- 数据结构:单链表操作之如何判断链表是否带环及相关操作
- OSGI学习之路之Require-Bundle与Imported-Package
- 链接备份 CVPR2017 Ubuntu vi caffe-python接口
- 使用 JsonConfig 排除 实体对象 建立在一对多的关联关系上 jsonConfig.setExcludes