读取外部属性文件

时间:2015-12-14 12:18:59

标签: java spring property-placeholder

我正在使用Spring MVC开发此应用程序。我应该从外部.properties文件中读取。

MVC-调度-servlet.xml中

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
            <list>
                <value>classpath:Host.properties</value>
                <value>file:///usr/pic1/JSONEditor/Host.properties</value>
            </list>
            </property>
            <property name="ignoreUnresolvablePlaceholders" value="true"/>
            <property name="ignoreResourceNotFound" value="true"/>
        </bean>

<bean id="dataSource" class="com.example.editor.Configuration">
           <property name="hostURL" value="${url}" />
       </bean>

Configuration.java

package com.example.editor;

import org.springframework.beans.factory.annotation.Value;

public class Configuration {

    @Value("$(url)")
    private String hostURL;

    public String getHostURL(){
        System.out.println("URL:"+this.hostURL);
        return this.hostURL;
    }

    public void setHostURL(String url){
        this.hostURL = url;
        System.out.println("URL:"+this.hostURL);
    }

}

EditorController.java

package com.example.editor.controller;

import java.io.IOException;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.example.editor.Configuration;



    @Controller
    @RequestMapping("/")
    public class EditorController {

        private static final String start = "Editor";

        @RequestMapping(value = "/", method = RequestMethod.GET)
        public String start(ModelMap model) throws IOException{

        Configuration confg = new Configuration();
        model.addAttribute("URL", confg.getHostURL());

            return start;
        }

    }

当我启动应用程序时,它能够读取文件并获取URL,但是一旦我在浏览器中打开它,hostURL = null。

有人可以指出错误是什么吗?

1 个答案:

答案 0 :(得分:0)

package com.example.editor;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;


@Service
public class Configuration {

    @Value("$(url)")
    private String hostURL;

    public String getHostURL(){
        System.out.println("URL:"+this.hostURL);
        return this.hostURL;
    }

EditorController.java

package com.example.editor.controller;

import java.io.IOException;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.example.editor.Configuration;


  @Autowired
  Configuration confg;

    @Controller
    @RequestMapping("/")
    public class EditorController {

        private static final String start = "Editor";

        @RequestMapping(value = "/", method = RequestMethod.GET)
        public String start(ModelMap model) throws IOException{

        model.addAttribute("URL", confg.getHostURL());

            return start;
        }

    }
    public void setHostURL(String url){
        this.hostURL = url;
        System.out.println("URL:"+this.hostURL);
    }

}

对于配置类,将其设为服务类。 在Controller中,您需要自动服务的服务类对象。 在这里,您使用new运算符创建了一个实例,它不适合您。