spring利用注解@Value获取properties属性为null

J2EE 码拜 10年前 (2015-04-04) 1609次浏览 0个评论

properties文件路径没有错,tomcat启动正常,可是就是显示wingPath为null,这是为什么??第一次发帖,各路大神过来看下~

data.properties:
mallPath = store/mall.json
wingPath = wing/wing.json

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
						http://www.springframework.org/schema/context
						http://www.springframework.org/schema/context/spring-context-2.5.xsd
						http://www.springframework.org/schema/tx
						http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
						http://www.springframework.org/schema/aop
						http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!-- ======================  将多个配置文件读取到容器中,交给Spring管理 ===================== -->
	<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="locations">
			<list>
				<value>/WEB-INF/classes/data.properties</value>
			</list>
		</property>
	</bean>
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
		<property name="properties" ref="configProperties"></property>
	</bean>

java:

import org.springframework.beans.factory.annotation.Value;
public class IndexInitAction {

	@Value("#{configProperties[""wingPath""]}")
	private String wingPath; // 这里就是得不到值,!

	public String getWingPath() {
		return wingPath;
	}
	public void setWingPath(String wingPath) {
		this.wingPath = wingPath;
	}
spring利用注解@Value获取properties属性为null
<value>/WEB-INF/classes/data.properties</value>
改成:
<value>classpath*:data.properties</value>
spring利用注解@Value获取properties属性为null
引用 1 楼 carve2000 的回复:

<value>/WEB-INF/classes/data.properties</value>
改成:
<value>classpath*:data.properties</value>

不行呀, 试过了的. 路径是是没有问题的, 如果路径有问题, 启动tomcat的时候就会报错.

spring利用注解@Value获取properties属性为null
5分
IndexInitAction这个类没有声明为spring的组件,spring 启动的时候去讲所有配置的bean 实例化放在容器里,就像你的data.properties,所以IndexInitAction这个类拿不到容器里的bean
spring利用注解@Value获取properties属性为null
引用 3 楼 mqzxm281588 的回复:

IndexInitAction这个类没有声明为spring的组件,spring 启动的时候去讲所有配置的bean 实例化放在容器里,就像你的data.properties,所以IndexInitAction这个类拿不到容器里的bean

那我要咋做?怎么声明为spring的组件?
在application.xml里添加<bean id=”indexInitAction” class=”com.gzyouai.backup.action.IndexInitAction”/> 是吗?

spring利用注解@Value获取properties属性为null
@Value(“#{data.wingPath}”)
spring利用注解@Value获取properties属性为null
引用 5 楼 sc6231565 的回复:

@Value(“#{data.wingPath}”)

也不行. 这到底是为啥

spring利用注解@Value获取properties属性为null
@Value(“${wingPath}”)
spring利用注解@Value获取properties属性为null
引用 7 楼 Dante_003 的回复:

@Value(“${wingPath}”)

也取不到值, 到底是哪个环节出问题了呢

spring利用注解@Value获取properties属性为null
5分
spring 的jar版本不对,你换成3.0以上的。
spring利用注解@Value获取properties属性为null
引用 9 楼 byg760 的回复:

spring 的jar版本不对,你换成3.0以上的。

我把spring-一系列的jar包都换成3.0的了, applicationContext.xml 的xsi配置也改成3.0了, 可是还是不行..

spring利用注解@Value获取properties属性为null
public static String getDirPath() {
		Resource resource = null;
		Properties props = null;
		String driverClass = null;
		try {
			resource = new ClassPathResource("/data.properties");
			props = PropertiesLoaderUtils.loadProperties(resource);
			driverClass= (String) props.get("wingPath");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return driverClass;

	}

我已经改成这种方式读取了. 可是不甘心啊~

spring利用注解@Value获取properties属性为null
7分
引用 11 楼 u013365789 的回复:
public static String getDirPath() {
		Resource resource = null;
		Properties props = null;
		String driverClass = null;
		try {
			resource = new ClassPathResource("/data.properties");
			props = PropertiesLoaderUtils.loadProperties(resource);
			driverClass= (String) props.get("wingPath");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return driverClass;

	}

我已经改成这种方式读取了. 可是不甘心啊~

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="IndexInitAction类路径" />
spring利用注解@Value获取properties属性为null
10分
引用 12 楼 byg760 的回复:
Quote: 引用 11 楼 u013365789 的回复:
public static String getDirPath() {
		Resource resource = null;
		Properties props = null;
		String driverClass = null;
		try {
			resource = new ClassPathResource("/data.properties");
			props = PropertiesLoaderUtils.loadProperties(resource);
			driverClass= (String) props.get("wingPath");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return driverClass;

	}

我已经改成这种方式读取了. 可是不甘心啊~

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="IndexInitAction类路径" />

public class IndexInitAction {
     
    
    public String wingPath; // 这里就是得不到值,!
     
    public String getWingPath() {
        return wingPath;
    }

    @Value("#{configProperties[""wingPath""]}")
    public void setWingPath(String wingPath) {
        this.wingPath = wingPath;
    }

spring利用注解@Value获取properties属性为null
小白路过    
spring利用注解@Value获取properties属性为null
小白路过    
spring利用注解@Value获取properties属性为null
楼主你看看这篇文章,感觉有点类似哟 java分享网的 
http://www.itjavaer.com/article/29
spring利用注解@Value获取properties属性为null
7分
楼上说得对,你需要在DispatcherServlet 所在配置,写入

<context:property-placeholder ignore-unresolvable="true" location="classpath*:/plugConfig.properties" />
spring利用注解@Value获取properties属性为null
6分
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    	classpath*:/applicationContext.xml
    </param-value>
  </context-param>

是web的上下文,但是我理解并没有加入DispatcherServlet, 我个人理解是这样


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明spring利用注解@Value获取properties属性为null
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!