访问Spring的MVC应用程序属性(Accessing Application Propertie

2019-07-28 20:18发布

新到Spring-MVC。

我想两个属性(uploadFolder = ..,downloadFolder = ..)存储在一个属性文件和访问它在HomeController类(由MVC模板自动生成)。

能否请你指导我如何..

1)创建与上述一个app.properties文件并把它放在下/ SRC /主/资源。 这是正确的,或者它应该在/ web应用/资源去?

2)以下面的方式放置在豆在servlet的context.xml中。 它是否正确?

<beans:bean id="messageSource"
   class="org.springframework.context.support.ResourceBundleMessageSource">
   <beans:property name="basename" value="app" />
</beans:bean>

3)现在我该怎样访问这个在Java中的控制器?

4)如何访问这些在JSP?

我不知道我是多么会感谢你的。

Answer 1:

有几种不同的方式来做到这一点。 我这样做。 在应用方面:

<util:properties id="myProps" location="classpath:app.properties" />

确保您已在该文件包括“UTIL”命名空间的顶部以下内容:

xmlns:util="http://www.springframework.org/schema/util" 
xsi:schemaLocation= "... http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"

我通常把我的属性文件中的src / main /资源。 只要他们是在类路径中,你是好。 然后,在你的控制器,你可以用你的注释字段/方法:

@Controller
public class MyController {

    @Value("#{myProps['uploadFolder']}")
    private String uploadFolder

    @Value("#{myProps['downloadFolder']}")
    private String downloadFolder

    @RequestMapping("myPage")
    public String loadPage(ModelMap m) {
        m.addAttribute("uploadFolder", uploadFolder);
        m.addAttribute("downloadFolder", downloadFolder);
        return "myPage";
    }

    public void setUploadFolder(String uploadFolder) {
        this.uploadFolder = uploadFolder;
    }
    public void setDownloadFolder(String downloadFolder) {
        this.downloadFolder = downloadFolder;
    }
}

然后,在你的JSP:

Download folder: ${downloadFolder} <br/>
Upload folder: ${uploadFolder}

HTH。 让我知道如果您有任何问题。



Answer 2:

1)更好的方法是通过使用src/main/resources

2)是的,但这个messages有不同的目的

3)

一种方法使bean从属性文件src/main/resources

<bean id="foldersConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
   <property name="location" >
      <value>/WEB-INF/classes/folders.properties</value>
   </property>
</bean>

而在你的控制器只需注入参考。

这里怎么控制器看起来就像中,xml:

<bean id="myController" class="my.project.package.controller.MyController">
 ...
 <property name="foldersConfig" ref="foldersConfig" />
</bean>

该控制器类,相关的部分:

public class MyController extends ... {

 private Properties foldersConfig;

 public void setFoldersConfig(Properties config) {
   this.foldersConfig = config;
 }
}

4)你可以访问,如果你把性的景观 - 模型,但是这不是很好的解决方案。 带你控制器(路径)需要的东西,并把它的结果。



文章来源: Accessing Application Properties in Spring-MVC