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上 , 运行截图如下: