我有一个Maven设置。我的
目录;看起来是这样的:~/中的xml
文件。m2
<settings>
<profiles>
<profile>
<id>mike</id>
<properties>
<db.driver>org.postgresql.Driver</db.driver>
<db.type>postgresql</db.type>
<db.host>localhost</db.host>
<db.port>5432</db.port>
<db.url>jdbc:${db.type}://${db.host}:${db.port}/dbname</db.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>mike</activeProfile>
</activeProfiles>
<servers>
<server>
<id>server_id</id>
<username>mike</username>
<password>{some_encrypted_password}</password>
</server>
</servers>
</settings>
我想使用这些属性两次
集成测试
阶段,就可以设置并拆除我的数据库。使用Maven过滤,这是完美的工作
servlet上下文中。Maven的resources:resources
阶段中的xml
文件。有关设置的上半部分中的属性。xml
,例如${db.url}
,这样做很好。我不知道如何将我的数据库用户名和(解密的)密码替换到Springservlet上下文中。xml
文件
我的servlet上下文的相关部分。xml
文件看起来像:
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>${db.driver}</value></property>
<property name="url"><value>${db.url}</value></property>
<property name="username"><value>${username}</value></property>
<property name="password"><value>${password}</value></property>
</bean>
这里的最终目标是让每个开发人员拥有自己的Maven设置(以及他们自己机器上的数据库,用于集成测试)...詹金斯服务器上也有类似的设置。我们不想共享一个共同的用户名/密码/等。
我还没有尝试过,但是根据这个maven wiki页面,您应该能够在设置中引用属性。xml
使用设置
前缀。因此,
${settings.servers.server.username}
最好在设置中返回
用户名。xml
。
我建议你在中间使用一个属性文件。我的意思是:Spring应用程序将使用上下文加载属性文件中的属性值:属性占位符
,而Maven将使用来自settings.xml的值替换${...}变量。
您的财产文件:
db.driver=${db.driver}
db.url=${db.url}
username=${username}
password=${password}
您的servlet上下文。xml
文件
<context:property-placeholder location="classpath:your-property-file.properties" />
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>${db.driver}</value></property>
<property name="url"><value>${db.url}</value></property>
<property name="username"><value>${username}</value></property>
<property name="password"><value>${password}</value></property>
</bean>
在你的pom里。xml
<resources>
...
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
...
</resources>
有一种通过配置Maven War插件来过滤web资源的方法。看看这个官方插件的文档片段。
顺便说一句,我强烈建议重新考虑这种基于过滤的方式,以便在构建时提供事实上的运行时配置。请注意,您必须重新生成相同的代码,以便为另一个环境准备包(或者编辑包内容)。您可以使用ApplicationServer的特定功能(至少JBoss有一个)或使用Spring,AFAIR也可以这样配置。
根据文档http://cxf . Apache . org/docs/async-client-http-transport . html,我试图通过使用上下文属性“use.async.http.conduit”来强制使用HttpAsyncClient 然而,我不知道在哪里/如何在我的应用程序中设置这些类型的上下文属性。 我通过以下方式使用基于代理的客户端 有人知道如何设置这些上下文属性并强制使用
我正在尝试将Spring security与Apache Wink应用程序集成。REST服务与spring和working Fine集成。 当我在spring上下文中进行更改以添加spring安全性时,我开始出现following following错误。 13:53:08,199错误[org.springframework.web.Context.contextloader](ServerSer
我对react、react hooks和js/ts非常陌生。 目前,我正在编码一个简单的按钮,它通过useContext获取一个状态,并通过useReucer和调度函数更新该状态。 我试图将我所有的代码分离到特定的文件中。来自减速器的调度函数在提供程序中作为值传递。 当我在使用者组件中调用传递的函数时,我可以给它一个任何类型的值(在我的示例中是数字)给调度器。我在上下文、reducer等中设置了所
问题内容: 配置 : Spring 2.5,Junit 4,Log4j 从系统属性中指定log4j文件位置 在运行时,使用-D java选项设置系统属性。一切都很好。 问题/我需要什么: 在单元测试时,未设置系统属性,并且文件位置未解析。 App使用Spring,想简单地配置Spring以 设置 系统属性。 更多信息: 要求仅用于配置。无法引入新的Java代码或IDE中的条目。理想情况下,Spri
我想用Spring Boot来外部化我的配置,但我想继续部分使用我的xml上下文。 我的主类SpringServerApplication.java: 我将配置放在application.properties中。 但它不起作用。提前感谢你的帮助。
问题内容: 我正在尝试根据某个Maven配置文件是否处于活动状态来使用数据库信息配置Spring配置文件。我已经看到了一些答案,但是很难将它们放在一起。 我有一个这样的Maven个人资料: 还有一个settings.xml文件,如下所示: 并在servlet-context.xml中: 我的问题基本上是,如何将Maven属性放入servlet- context.xml文件中?我需要一个.prope