我有2个上下文的应用程序。用于Web逻辑的Web不可知业务逻辑和ChildContext(由调度程序servlet隐式创建)的父级。
我的设置很像
function myFunction() {
AWS.init("MY_ACCESS_KEY", "MY_SECRET_KEY");
var instanceXML = AWS.request('ec2', 'us-east-1', 'DescribeInstances', {"Version":"2015-10-01"});
...
}
和
@Configuration
public class BusinessConfig {
@Bean
public ObjectMapper jacksonMapper() { return new ObjectMapper() }
}
我需要父上下文中的对象映射器,因为我也在安全配置中使用它。但有人可以解释一下,为什么@Autowired objectMapper为null?它在父上下文中创建(父项存在的事实甚至在启动时由spring记录)。另外@Autowired默认情况下要求= true,所以它不应该在configure方法中爆炸(如果由于某种原因bean没有,那么它应该在构造上下文时被炸毁)。
在我看来,春天可能存在一些生命周期问题 - 从某种意义上说,它首先调用被覆盖的方法,然后@Autowires依赖...我还尝试@Autowire BusinessConfig(应该是完美的)根据文件合法 - 结果是相同的(null))。
我该怎么做才能让它发挥作用?
提前致谢!
我发现了这个问题。不幸的是,它与WebMvcConfigurerAdapter和@Configuration无关。这是由于propertyPlaceholderConfigurer缺少static修饰符触发的上下文过早初始化引起的...我在Spring core jira中创建了问题(https://jira.spring.io/browse/SPR-14382)
答案 0 :(得分:0)
如何简单地重命名bean声明方法以匹配自动装配的bean?
@Configuration
public class BusinessConfig {
@Bean
public ObjectMapper objectMapper() { return new ObjectMapper() }
}
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Autowired
private ObjectMapper objectMapper;
[...]
}