8 -- 深入使用Spring -- 1...4 属性占位符配置器

      8.1.4 属性占位符配置器

        PropertyPlaceholderConfigurer 是一个容器后处理器,负责读取Properties属性文件里的属性值,并将这些属性值设置成Spring配置文件的数据。

        通过使用PropertyPlaceholderConfigurer后处理器,可以将Spring配置文件中的部分数据放在属性文件中设置。

        XML :

<?xml version="1.0" encoding="UTF-8"?>
<!-- Spring 配置文件的根元素,使用Spring-beans-4.0.xsd语义约束 -->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>dbconn.properties</value>
                <!-- 如果有多个属性文件,依次在下面列出来 -->
                <!-- <value>wawa.properties</value> -->
            </list>
        </property>
    </bean>

    <!-- 对于采用基于XML Schema的配置文件而言,如果导入了context:命名空间,则可采用如下方式来配置该属性占位符 -->
    <!-- <context:property-placeholder location="classpath:wawa.properties"/> -->

    <!-- 定义数据源Bean,使用C3P0数据源实现 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <!-- Spring容器将从PropertyPlaceholderConfigurer指定的属性文件中搜索这些key对应的value,并为该Bean的属性值设置这些value值 -->
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

</beans>

        Properties :

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=system

        Class : Main

package edu.pri.lime._8_1_4.main;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("app_8_1_4.xml");
        DataSource ds = null;
        PreparedStatement pstmt = null;
        Connection conn = null;
        try {
            ds = ctx.getBean("dataSource",DataSource.class);
            conn = ds.getConnection();
            pstmt = conn.prepareStatement("insert into news_inf values(null,?,?)");
            pstmt.setString(1, "lime");
            pstmt.setString(2, "Oracle");
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(pstmt != null)
                try {
                    pstmt.close();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            if(conn != null)
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }
    }
}

啦啦啦

时间: 2024-10-25 06:33:37

8 -- 深入使用Spring -- 1...4 属性占位符配置器的相关文章

Spring(3.2.3) - Beans(12): 属性占位符

使用属性占位符可以将 Spring 配置文件中的部分元数据放在属性文件中设置,这样可以将相似的配置(如 JDBC 的参数配置)放在特定的属性文件中,如果只需要修改这部分配置,则无需修改 Spring 配置文件,修改属性文件即可.下面是一个属性占位符的示例. Spring  配置: <!-- 将配置值具体化到一个属性文件中,并且使用属性文件的key名作为占位符 --> <context:property-placeholder location="classpath:jdbc.p

Spring属性占位符 PropertyPlaceholderConfigurer

http://www.cnblogs.com/yl2755/archive/2012/05/06/2486752.html PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现.PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去.在XML文件中用${key}替换指定的properties文件

Spring实战(八)bean装配的运行时值注入——属性占位符和SpEL

前面涉及到依赖注入,我们一般哦都是将一个bean引用注入到另一个bean 的属性or构造器参数or Setter参数,即将为一个对象与另一个对象进行关联. bean装配的另一个方面是指将一个值注入到bean的属性or构造器参数中,通常我们可以将值硬编码在配置类中,XML中也是硬编码(写出所有值). 1.若想避免硬编码,让这些值在运行时再确定,Spring提供了两种在运行时求值的方式. 属性占位符(Property placeholder)--Spring支持将属性定义到外部的属性文件中,然后用占

Spring_属性占位符

忍耐和坚持虽是痛苦的事情,但却能渐渐地为你带来好处.--奥维德 属性占位符 Spring一直支持将属性定义到外部的属性的文件中,并使用占位符值将其插入到Spring bean中. 占位符的形式为使用"${}"包装的属性名称,为了使用属性占位符,我们必须配置一个PropertyPlaceholderConfigurer或PropertySourcesPlaceholderConfigurer实例,从Spring 3.0开始,推荐使用PropertySourcesPlaceholderCo

Maven 工程从一个properties 用属性占位符引用另一个properties的内容

1.pom xml 配置 <!--filter--> <build> <filters> <filter>src/main/resource/test.properties</filter><!--基础文件--> </filters> <resources> <resource> <directory>src/main/resource</directory><!--需

spring占位符解析器---PropertyPlaceholderHelper

一.PropertyPlaceholderHelper 职责 扮演者占位符解析器的角色,专门用来负责解析路劲中or名字中的占位符的字符,并替换上具体的值 二.例子 public class PropertyPlaceholderHelperDemo { @SuppressWarnings("resource") public static void main(String[] args) { Properties properties = System.getProperties();

Spring属性占位符PropertyPlaceholderConfigurer的使用

1.一个简单的Demo 1.1.创建conf.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>    <bean id="

关于 Spring 中使用 context:property-placeholder 属性占位符设置配置文件

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 该配置文件中以键值存储,键在 spring 配置中可以用 ${} 来引用,而值在配置文件中来配置.具体键变量的生命周期,可能是当前上下文,需求证.

【Spring源码分析】.properties文件读取及占位符${...}替换源码解析

前言 我们在开发中常遇到一种场景,Bean里面有一些参数是比较固定的,这种时候通常会采用配置的方式,将这些参数配置在.properties文件中,然后在Bean实例化的时候通过Spring将这些.properties文件中配置的参数使用占位符"${}"替换的方式读入并设置到Bean的相应参数中. 这种做法最典型的就是JDBC的配置,本文就来研究一下.properties文件读取及占位符"${}"替换的源码,首先从代码入手,定义一个DataSource,模拟一下JDB