【问题标题】:spring java xml configurationspring java xml配置
【发布时间】:2013-10-24 01:02:32
【问题描述】:

我在我的 java web 应用程序中使用 spring。网站变大了,我想设置一些配置。

我一直在研究并遇到了诸如文档构建器工厂、用 java config 替换 spring xml 之类的东西。我不知道从哪里开始。

我正在考虑在 xml (WEB/newConfig.xml) 中实现配置并让 java bean 读取它。基本上我想将我的配置值输入到 xml 中并让它由一个 java bean 加载,以便我可以在控制器和 jstl 中使用它。

我只是在这里举一些例子。例如xml配置:

<property name="numberOfCars" value="3" />
<property name="webSiteName" value="New Spring Web App" />
....

我在我的 java 类中读到它:

class Config {

 public getNumberOfCars() {
   return numOfCars;
 } 

 public getWebSiteName() {
   return webSiteName;
 } 
}

我应该从哪里开始,我可以阅读哪些在线资料?

================================

更新

这是我创建的。

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd   http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<context:property-placeholder location="/WEB-INF/your_prop_file.properties" />
<bean id="ConfigMgr" class="org.domain.class.ConfigMgr">
 <property name="username" value="${username}">
</bean>

</beans>

you_prop_file.properties

username=hello world name

ConfigMgr.java

public class ConfigMgr {
 private String username;

...getter

...setter
}

在我的控制器中,这是我所做的:

ConfigMgr config = new ConfigMgr();
sysout.out.println(config.getUsername());

我得到空值,我确定我在这里遗漏了一些东西。我应该在哪里将用户名值设置为 ConfigMgr 类?

【问题讨论】:

  • 阅读spring documentation...它包含的信息超出了要求
  • 在 stackoverflow 上请求站外资源是题外话。但是,您需要从 Spring 3.2.4 文档的第 5 章 IoC 容器开始。
  • ok tks man.. 将查看文档。这些天我似乎违反了stackoverflow =|
  • 可以将配置属性保存在properties 文件中吗?

标签: java spring spring-mvc


【解决方案1】:

您没有注入您在 XML 文件中创建的 ConfigMgr bean。
您正在做的是在控制器中创建一个新对象,该对象对属性文件一无所知。
现在,您可以在控制器中使用 @Autowired 或通过 xml 配置注入它。
google 中有很多关于基本 spring 依赖注入的示例。

【讨论】:

  • 伙计,我意识到我必须使用自动有线.. 我仍在尝试使用来自开源的 j2ee。哈哈,这是一段旅程。
  • 一旦你尝到它的味道,你会爱上它的:) ..顺便说一句,你可以投票,这样其他人至少可以得到答案..
【解决方案2】:

Spring Java 配置是一个较新的功能,它允许您使用 Java 类而不是 XML 文件来配置您的 Spring 应用程序。它只是 XML 配置的替代方案。 XML 方式同样功能丰富。

根据我从您的问题中可以得出的结论,您希望将硬编码的 params (numberOfCars,webSiteName..) 值移出您的配置文件。

如果是这样,您不必走那么远。

只需使用:-

<context:property-placeholder location="classpath:your_prop_file.properties" />

在您的 spring xml 文件中并替换参数值,例如:-

<property name="webSiteName" value="${website.name}" />

您需要在类路径中有一个 your_prop_file.properties 文件,其中包含以下内容:-

website.name=New Spring Web App

【讨论】:

  • 嗨 kumar tks 回复。我在这里有点新,所以请原谅我。我应该在哪里添加这个 ?在 servlet.xml 中,我应该把这个属性文件放在哪里?在 WEB-INF 或资源目录中?
  • 应该添加到你的spring xml配置文件中(例如applicationContext.xml)。将 .properties 文件放在类路径中包含的任何源文件夹中。
  • 嘿 kumar,我已经输入了我的更新。请参见上文。我不确定我应该在哪里将用户名的值设置为 ConfigMgr 类。我做得对吗?我什至需要实现 ConfigMgr.java 吗?
  • 当您使用“new”运算符创建 bean 时,Spring 不会出现。您需要从 ApplicationContext 获取 bean。我建议你先阅读一些基本的 Spring IOC 教程/文档,并弄清楚你的基本原理。
  • 嘿tks kumar,我设法让它工作。天哪,这让我难以置信了将近 2 周.. 干杯
猜你喜欢
  • 2023-03-21
  • 2017-06-21
  • 2016-10-24
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2015-05-30
相关资源
最近更新 更多