我是我公司产品的最终用户.它不太适合集成到Spring中,但是我能够处理上下文并按名称检索所需的bean.但是,我仍然想知道是否有可能将bean注入到这个类中,即使该类不是由Spring本身管理的.
澄清:管理某些类MyClass生命周期的同一个应用程序也在管理Spring上下文的生命周期.Spring对MyClass的实例没有任何了解,我想知道如何将实例提供给上下文,但不能在上下文本身中创建实例.
是否可以使用@Autowired列表?
就像我有mimetypes属性文件一样,在我的类文件中我有这样的东西
@Autowired
private List<String> mimeTypes = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud) 接口是一个可以存储我的接受的地方
public static final Foo bar
Run Code Online (Sandbox Code Playgroud)
你是否推断它们是从程序外读取的?你为它组成一个超级班吗?
当情况出现时,你是如何做到的?
我打算将Spring Boot用于我的任务.它是一个连接数据库的典型服务器应用程序.我知道我可以使用Spring Configuration外部化我的属性,例如数据库连接细节.但我还有其他需要在运行时更新的动态属性.例如鳍状肢/特征标志.我的应用程序的某些功能需要动态控制,例如想象app.cool-feature.enable = true之类的属性,然后在一段时间后app.cool-feature.enable = false关闭相同的功能
有什么建议在运行时采集这种动态行为的最佳做法是什么?我可以想到以下选项来触发变更......
我知道我可以编写我自己的自定义代码来实现这个(这将是第三次),但只是想知道是否已经有我不知道的动态属性配置的标准方法/常见做法.如果它可以与Apache ZooKeeper,coreos etcd,Netflix策展人等其他解决方案一起使用并且与Spring紧密集成,那将会很棒.
思考?
我试图将属性文件加载到Spring bean中,然后将该bean注入到类中.
我无法工作的唯一部分似乎是使用@Resource参考.有人可以为我连接最后一块吗?我每次都得到一个空值.似乎不想注入价值.
[编辑] - 我原本以为使用@Resource是最好的方法,但我发现的解决方案更容易.
我在另一篇文章中看到这个解决方案
参考解决方案链接:将 属性值注入Spring - 由DON发布
感谢Don的帖子,但我不知道如何用@Resource完成它.
调试结果:
变量值appProperties始终为null.它没有被注射.
Spring Config.

样品类:
package test;
import java.util.Properties;
import javax.annotation.Resource;
public class foo {
public foo() {}
@Resource private java.util.Properties appProperties;
}
Run Code Online (Sandbox Code Playgroud)
基于以下批准的解决方案中的建议.以下是我所做的更改.
弹簧配置:

Java类:

我正在创建一个应用程序,我将项目分成不同的模块,如(域,存储库,服务和Web),以及许多用于邮件发送,文本格式化等的通用maven项目.我也使用Spring.
目前我只在Web项目中有Spring应用程序上下文文件.但是,由于我正在为文本格式化等创建一般的pupose项目,这些项目封装了实际应用程序中的库(例如freemarker),我不喜欢我必须在Web项目的Spring应用程序上下文文件中指定库依赖配置.
问题是,为每个模块分配一个单独的Spring应用程序上下文文件,然后在我使用它们的项目中导入上下文文件是否正确.这是正确的方法吗,还是有更好的方法?
我感兴趣的是当我使用XML文件而不是JavaConfig时如何解决这个问题.
我有2个属性文件a.properties和b.properties 我已经将应用程序上下文添加为:
<context:property-placeholder location="classpath:a.properties" />
<context:property-placeholder location="classpath:b.properties"/>
Run Code Online (Sandbox Code Playgroud)
具有属性的第一个文件包含数据库连接详细信息(这很有效)第二个 - 包含某些特定bean使用的属性.在那个bean中,我通过@Value注释使用这些属性
@Value("#{qw.er}")
private String someA;
@Value("#{as.df}")
private String someB;
Run Code Online (Sandbox Code Playgroud)
但是我在启动时遇到异常:
org.springframework.expression.spel.SpelEvaluationException:
EL1008E:(pos 0): Field or property 'qw' cannot be found on object of type
'org.springframework.beans.factory.config.BeanExpressionContext'
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
你有可能context:property-placeholder在一个文件中使用2 吗?
PS:属性qw.er和as.df仅存在于文件b.properties中
我在Apache Tomcat上有一个Web应用程序.Web应用程序使用Quartz Scheduler.我quartz.properties使用-D包含以下属性的开关从类路径加载:
quartz.jndi=java:comp/env/something
org.quartz.dataSource.myJndiName.jndiURL=${quartz.jndi}
Run Code Online (Sandbox Code Playgroud)
但它没有用.也许,${quartz.jndi}唯一可以在Spring Context中使用PropertyPlaceholderConfigurerbean吗?是否可以在Spring中为Quartz Scheduler加载此属性文件?
正如这里和这里所解释的,很清楚如何做到这一点,但似乎仍然无法使其发挥作用。我只是喜欢使用 @Value 注释来将属性注入到 spring bean 中。我创建了一个基本的 spring MVC 项目,其中包含一个控制器和一个 bean。
这是我的应用程序上下文:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util" xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<context:component-scan base-package="me.co.fatsecret" />
<!-- Properties -->
<bean id="props"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:fatProperties.properties" />
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
我有一个名为配置的 bean:
package me.co.fatsecret;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Configuration …Run Code Online (Sandbox Code Playgroud) import org.springframework.beans.factory.annotation.Value;
Run Code Online (Sandbox Code Playgroud)
我使用spring @ value从配置中获取值,它在其他类(控制器和其他服务)中也能正常工作,但在模型中不起作用:
public final class Page {
@Value("${defaultUrl}")
private static String defaultUrl;
private String url;
public Page(String url) {
this.url = url;
}
public Page() {
this(defaultUrl);
}
}
Run Code Online (Sandbox Code Playgroud)
在上述情况下,无法从Spring.value获取defaultUrl。有人知道为什么吗?
spring ×9
java ×7
spring-mvc ×2
autowired ×1
coding-style ×1
etcd ×1
interface ×1
java-ee ×1
list ×1
maven ×1
spring-boot ×1
tomcat ×1