spring 运行时属性值注入
继续spring学习,今天介绍两种外部属性值注入的方式。当你需要读取配置信息时,可以快速读取。
开始之前先创建属性文件site.properties,放在classpath下面
#数据库配置 ###
database.oracle.platform=org.hibernate.dialect.Oracle9iDialect
database.mysql.platform=org.hibernate.dialect.MySQL5InnoDBDialect
database.sqlserver.platform=org.hibernate.dialect.SQLServerDialect
1、使用@PropertySource注解和org.springframework.core.env.Environment。@PropertySource声明属性源,Environment用于检索属性值。
@Controller
@RequestMapping("/free")
@PropertySource("classpath:site.properties")
public class FreeMarkerController {
@Autowired
Environment env; @RequestMapping(value = "/list", method = RequestMethod.GET)
public String sayHelloAgain(ModelMap model) {
model.addAttribute("greeting", "Freemarker Again, from Spring 4 MVC");
model.addAttribute("mysql",env.getProperty("database.mysql.platform"));
return "welcome2";
}
}


2、使用@Component注解和@Value注解。使用组件自动扫描方式,首先需要在beans配置文件中加载属性文件到spring上下文中,之后用@Value注解标注属性,用于自动组装。
- 加载属性文件到spring上下文中(property-placeholder简捷易用,个人比较喜欢)
<!-- 引入配置文件的方法一 -->
<context:property-placeholder location="classpath:site.properties"/>
<!-- 引入配置文件的方法二 -->
<!--<bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:site.properties" />
</bean>-->
- 创建属性组件,将POJO与属性文件关联起来
@Component
public class SiteProperties {
@Value("${database.mysql.platform}")
private String mysql;
@Value("${database.oracle.platform}")
private String oracle;
@Value("${database.sqlserver.platform}")
private String sqlserver; public String getMysql() {
return mysql;
} public String getOracle() {
return oracle;
} public String getSqlserver() {
return sqlserver;
}
}
- 调用试试
@Autowired
SiteProperties site;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String sayHelloAgain(ModelMap model) {
List<ProcessBlock> list = processBlock.findByName("主干流程");
System.out.println("主干流程描述:"+list.size());
//long div =0L;
//long per = 10/div;
model.addAttribute("greeting", "Freemarker Again, from Spring 4 MVC");
model.addAttribute("mysql",env.getProperty("database.mysql.platform"));
model.addAttribute("oracle",site.getOracle());
return "welcome2";
}


本次测试,到此结束。需要说明的是spring的注入还有其他的方式。个人比较喜欢这两种。当然,在这两者之间,我更喜欢第二种方法一些,用POJO方式进行属性管理,代码会更干净些。
spring 运行时属性值注入的更多相关文章
- Spring Boot之配置文件值注入(@ConfigurationProperties)
前言:Spring Boot配置文件值的注入有两种方式,分别是 @ConfigurationProperties @Value 这里我们使用第一种 首先我们创建一个application.yml文件, ...
- 30.怎样在Swift中添加运行时属性?
和OC一样,Swift中也可以添加运行时属性.下面将提供一个完整的例子,演示如何给按钮点击事件添加运行时属性. 1.示例 import UIKit var s_GofButtonTouchDownKe ...
- 1-3 Spring Bean 的属性值设置
详见http://www.cnblogs.com/chenssy/archive/2013/03/17/2964593.html 1.注入普通的属性值 <bean id="Cat&qu ...
- 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...
- Method Swizzling以及AOP编程:在运行时进行代码注入-备用
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...
- Spring整合JUnit spring静态对象属性的注入
package cn.itcast.d_junit4; import org.junit.Test; import org.junit.runner.RunWith; import org.sprin ...
- Method Swizzling以及AOP编程:在运行时进行代码注入-b
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...
- spring boot 配置属性值获取注解@Value和@ConfigurationProperties比较
功能比较 : @ConfigurationProperties @Value 映射赋值 批量注入配置文件中的属性 一个个指定 松散绑定(松散语法)① 支持 不支持 SpEL② 不支持 支持 ...
- Spring经常使用属性的注入及属性编辑器
对于对象的注入,我们使用ref方式,能够指定注入的对象.以下看下对于基本类型的注入.以及当spring无法转换基本类型进行注入时,怎样编写一个相似转换器的东西来完毕注入. 一.基本类型的注入 以下写一 ...
随机推荐
- Windows挂钩注入DLL
注入DLL实现源码:HINSTANCE g_hInstDll = NULL; HHOOK g_hHook = NULL; DWORD g_dwThreadId = 0; #ifdef _MANAGED ...
- Request.getparameternames 获取form表单里面所有的请求参数 。 返回一个Enumeration类型的枚举.
通过Enumeration的hasMoreElements()方法遍历.再由nextElement()方法获得枚举的值.此时的值是form表单中所有控件的name属性的值. 最后通过request.g ...
- query返回值
总结:PDO::query($sql)返回值是一个对象,其中包括了你输入的sql语句 而fetch()方法执行成功则返回包含一条记录的数组,失败返回false. $rs = $pdo -> ...
- OSSEC初探
OSSEC初探 概念: OSSEC是一款开源的基于主机的入侵检测系统(HIDS),它可以执行日志分析.完整性检验.windows注册表监控.隐匿性检测和实时告警.它可以运行在各种不同的操作系统上,包括 ...
- ABP官方文档翻译 4.6 审计日志
审计日志 介绍 关于IAuditingStore 配置 通过特性启用/禁用 注意事项 介绍 维基百科:“审计追踪(也称为审计日志)是与安全相关的按时间先后的记录.记录集合.记录的目的地和源,提供一系列 ...
- instanceof、isInstance、isAssignableFrom的区别
https://stackoverflow.com/questions/3949260/java-class-isinstance-vs-class-isassignablefrom 1. MyCla ...
- java HotSpot 内存管理白皮书
原文见:http://www.open-open.com/lib/view/open1381034220705.html.查阅资料后,对原文做了补充. 文中关于JVM的介绍基于JDK1.6的Hotsp ...
- bzoj 4033: [HAOI2015]树上染色 [树形DP]
4033: [HAOI2015]树上染色 我写的可是\(O(n^2)\)的树形背包! 注意j倒着枚举,而k要正着枚举,因为k可能从0开始,会使用自己更新一次 #include <iostream ...
- WPF ”真正的“高仿QQ
时常可以在各种论坛 博客 看到 各种所谓的 高仿QQ. 说实话 越看越想笑呢.(PS:纯粹的 抨击 那些 不追求 UI 完美主义者) 例如: 本次模仿 采用 C# WPF XAML , 总 ...
- 一、爬虫的基本体系和urllib的基本使用
爬虫 网络是一爬虫种自动获取网页内容的程序,是搜索引擎的重要组成部分.网络爬虫为搜索引擎从万维网下载网页.一般分为传统爬虫和聚焦爬虫. 爬虫的分类 传统爬虫从一个或若干初始网页的URL开始,获得初始网 ...