继续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 运行时属性值注入的更多相关文章

  1. Spring Boot之配置文件值注入(@ConfigurationProperties)

    前言:Spring Boot配置文件值的注入有两种方式,分别是 @ConfigurationProperties @Value 这里我们使用第一种 首先我们创建一个application.yml文件, ...

  2. 30.怎样在Swift中添加运行时属性?

    和OC一样,Swift中也可以添加运行时属性.下面将提供一个完整的例子,演示如何给按钮点击事件添加运行时属性. 1.示例 import UIKit var s_GofButtonTouchDownKe ...

  3. 1-3 Spring Bean 的属性值设置

    详见http://www.cnblogs.com/chenssy/archive/2013/03/17/2964593.html 1.注入普通的属性值 <bean id="Cat&qu ...

  4. 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入

    概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...

  5. Method Swizzling以及AOP编程:在运行时进行代码注入-备用

    概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...

  6. Spring整合JUnit spring静态对象属性的注入

    package cn.itcast.d_junit4; import org.junit.Test; import org.junit.runner.RunWith; import org.sprin ...

  7. Method Swizzling以及AOP编程:在运行时进行代码注入-b

    概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...

  8. spring boot 配置属性值获取注解@Value和@ConfigurationProperties比较

    功能比较 :     @ConfigurationProperties  @Value  映射赋值 批量注入配置文件中的属性 一个个指定 松散绑定(松散语法)① 支持 不支持 SpEL② 不支持 支持 ...

  9. Spring经常使用属性的注入及属性编辑器

    对于对象的注入,我们使用ref方式,能够指定注入的对象.以下看下对于基本类型的注入.以及当spring无法转换基本类型进行注入时,怎样编写一个相似转换器的东西来完毕注入. 一.基本类型的注入 以下写一 ...

随机推荐

  1. Python 魔法方法详解

    据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切. 他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个, ...

  2. 20170510 mysql导入导出csv

    一开始没加FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' 导致导出的csv没有进行分 ...

  3. python_大学排名爬取

    逻辑思路是什么? 1. 获取页面 2. 处理页面,提取信息 3. 格式输出 先走面向过程编程: 1. 要定义3个函数,对应以上三个过程 2. 在__main__函数中传入参数,并执行以上三个过程 #! ...

  4. CentOS7 配置花生壳开机启动

    在家安装服务器,外地可以随时登陆,感觉花生壳特别方便,具体路由器配置请参考http://service.oray.com/question/2486.html. 我使用的操作系统是 [root@loc ...

  5. Linux指令--rm, rmdir

    rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变.rm是一个危险的命令,使用的时 ...

  6. myeclipse取消js校验

    最近玩一个新的项目,项目里面集成了别的项目,在从SVN上第一次荡下来的时候编译的时候老是校验jq文件,老是被卡主,设置myeclipse环境的时候我已经取消了所有的js校验了,但是还是不行.恼火之余, ...

  7. android studio获取sha1签名

    转载 :http://blog.csdn.net/kezhongke/article/details/42678077

  8. PDO prepare预处理语句

    预处理语句 $dsn="mysql:host=localhost;dbname=emp"; try{ $pdo=new PDO($dsn,'root','root'); }catc ...

  9. js调用系统虚拟键盘

    <input type="text" id="tt" /> <script language="javascript" t ...

  10. 【转】IGS相关

    目 前,全球260多个lGS跟踪站中,我国占20多个,分布在武汉.拉萨.乌鲁木齐.昆明.上海等地,全球IGS网的GPS数据,由单台接收机交换 (RINEX)格式生成的日观测和导航数据文件组成,其存储方 ...