zoukankan      html  css  js  c++  java
  • 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容器会自动加载classpathproperties目录下的所有以.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上 , 运行截图如下:

  • 相关阅读:
    解决VSCode黑屏和终端空白无法输入的问题
    source map文件还原
    npm下载很慢的解决办法
    清理sqlserver2014的日志
    浏览器横向打印
    Vue3 diff的最长递增子序列 算法详解
    白话科普系列——网站靠什么提升加载速度?
    微服务架构下 CI/CD 如何落地
    网骗欺诈?网络裸奔?都是因为 HTTP?
    有赞统一接入层架构演进
  • 原文地址:https://www.cnblogs.com/chen-lhx/p/5587883.html
Copyright © 2011-2022 走看看