gpt4 book ai didi

java - 从 Spring 上下文到 Spring 注解

转载 作者:行者123 更新时间:2023-12-04 10:35:23 25 4
gpt4 key购买 nike

我正在将我的项目包从 Spring xml 文件配置移动到类注释配置。
我在另一个上下文 xml 文件中定义的 bean 上遇到了 bean 实例化失败的问题。
这是定义:

<bean id="mglsChecker" class="DefaultMglsAdapter" destroy-method="close">
<constructor-arg value="${mgls.server.address}"/>
<constructor-arg value="${mgls.fname}"/>
<constructor-arg value="${mgls.lcount}"/>
</bean>

mglsChecker 类在整个“解决方案”通用的基础设施包中定义。
问题是变量“${}”没有定义,所以现在这个类没有被实例化。
当我的项目配置为 xml 文件时,我不明白它是如何工作的。
在原始 applicationContext.xml 中,我没有看到对此 mglsChecker 上下文文件的任何引用。
我应该在哪里查看任何帮助?我错过了什么?
谢谢,

最佳答案

您可以使用

@Configuration
class YourConfig {
// you usually don't need to explicitly give the bean name
// if you don't, Spring gives it the config's method name
@Bean(name = "mglsChecker", destroyMethod = "close")
MglsAdapter mglsChecker(@Value("${mgls.server.address}") String address,
@Value("${mgls.fname}") String fname,
@Value("${mgls.lcount}") long lcount) {
return new DefaultMglsAdapter(address, fname, lcount);
}
}

就个人而言,我更喜欢创建 @Component类,但为此您需要能够编辑 DefaultMglsAdapter类(class)。
@Component
class DefaultMglsAdapter implements MglsAdapter {
// fields to hold the configs
DefaultMglsAdapter(@Value("${mgls.server.address}") String address,
@Value("${mgls.fname}") String fname,
@Value("${mgls.lcount}") long lcount) {
// set fields
}
@PreDestroy
void close() {
// cleanup
}
}

编辑:纳入安德烈亚斯的更正:)

关于java - 从 Spring 上下文到 Spring 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60208543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com