spring-自动加载配置文件\使用属性文件注入

 

3. 使用properties文件注入

为了演示注入效果,先定义一个基本的Entity类


ProductEntity

package yjmyzz.entity;

import java.io.Serializable;

public class ProductEntity implements Serializable {

    private static final long serialVersionUID = -2055674628624266800L;
    /*
     * 产品编码
     */
    private String productNo;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 产品ID
     */
    private Long productId;

    public String getProductNo() {
        return productNo;
    }

    public void setProductNo(String productNo) {
        this.productNo = productNo;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productIdLong) {
        this.productId = productIdLong;
    }

    @Override
    public String toString() {
        return productId + "/" + productNo + "/" + productName;
    }

}

然后在applicationContext-beans.xml中配置以下内容:

 

spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                        <value>WEB-INF/classes/jdbc.properties</value>
                        <value>WEB-INF/classes/sms.properties</value>
            </list>
        </property>
    </bean>

    <bean id="productEntity" class="yjmyzz.entity.ProductEntity">
        <property name="productId" value="${product.id}" />
        <property name="productNo" value="${product.no}" />
        <property name="productName" value="${product.name}" />
        <!-- <property name="productId">
            <bean class="java.lang.Long">
                <constructor-arg index="0" value="${product.id}" />
            </bean>
        </property>
         -->
    </bean>
</beans>

 

注:classpath:properties/*.properties表示运行时 , spring容器会自动加载classpath\properties目录下的所有以.properties后缀结尾的文件 ,  我们在src/main/resources/properties/下放置一个product.properties属性文件 , 内容如下:

 

 product.id=3
 product.no=n95
 product.name=phone

该文件被spring自动加载后 , 就可以用里面定义的属性值 , 为Bean做setter属性注入 , 即配置文件中的<property name="productId" value="${product.id}" />

 

4.验证注入是否成功

在HomeController里 ,  向Spring容器要一个Bean ,  显示下它的属性:


HomeController

package yjmyzz.controller;

import javax.faces.bean.ManagedBean;

import yjmyzz.entity.ProductEntity;
import yjmyzz.utils.ApplicationContextUtils;

@ManagedBean(name = "Home")
public class HomeController {

    public String sayHello() {

        ProductEntity product = ApplicationContextUtils
                .getBean(ProductEntity.class);

        return product.toString();
    }

}

index.xhtml里仍然跟上篇相同:

 

index.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"> 

<h:head>
    <title>jsf-web</title>
</h:head> 
<body> 
    <h1>
        #{Home.sayHello()}
        
    </h1>
</body> 
</html>

最后部署到jboss上 , 运行截图如下:

posted @ 2016-06-15 16:12  龙昊雪  阅读(1872)  评论(0编辑  收藏  举报