gpt4 book ai didi

java - Spring 配置未按预期工作

转载 作者:行者123 更新时间:2023-12-01 14:03:02 25 4
gpt4 key购买 nike

我正在构建一个新项目,我想尝试一种新的方式来加载 Spring 配置。我找到了 @Configuration 注释并决定尝试一下。

@Configuration
@ImportResource("classpath:myApp-config.xml")
public class MyAppConfig
{
@Autowired
private MyClass myClass;

@Bean(name="someOtherBeanName")
public MyClass getMyClass ()
{
return myClass;
}

public void setMyClass( myClass m)
{
this.myClass= m;
}
}

在 spring 配置文件中:

<context:annotation-config/>
<bean name="someOtherBeanName" class="com.MyClass">
<property name="myClass">
<map>
<!-- details not relevant -->
</map>
</property>
</bean>

为了利用它,我有这样的代码:

//class member
private static MyAppConfig cfg = new MyAppConfig();
...
...
...
//In the class that needs the configuration
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(MyAppConfig.class);
ctx.refresh();
//appMgr = cfg.getMyClass();
appMgr = (MyClass) ctx.getBean("someOtherBeanName");

正如你所看到的,我以为我可以从我的配置对象中获取 Spring 配置的 MyClass 实例,但我必须从我的上下文对象中获取它。

我想我误解了 @Configuration@Bean 的工作方式。我已经很接近了还是还很遥远?

最佳答案

你无法从cfg.getMyClass();获取你的bean,这其中存在一些误解。

@Configuration 只是 spring 配置的另一种表示,你应该像你的 application-context.xml 一样理解它,这里没有什么新内容。

关于java - Spring 配置未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191138/

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