gpt4 book ai didi

java - 使用配置类时 Spring Autowiring

转载 作者:行者123 更新时间:2023-11-30 06:07:08 24 4
gpt4 key购买 nike

我有一个 xml bean 文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config/>
<bean id="helloWorld" class="com.a.b.HelloWorld">
<property name="attr1" value="Attr1 from XML"></property>
</bean>
<bean id="helloWorld2" class="com.a.b.HelloWorld2">
<property name="attr2" value="Attr2 from XML"></property>
</bean>
</beans>

我已经使用了这样的构造函数 Autowiring

public class HelloWorld2{
private String attr2;
public void setAttr2(String message){
this.attr2 = message;
}

public void getAttr2(){
System.out.println("getAttr2 == " + attr2);
}


}

public class HelloWorld{
private String attr1;
private HelloWorld2 helloWorld2;
public HelloWorld(){

}
@Autowired
public HelloWorld(HelloWorld2 helloWorld2){
System.out.println("hhh");
this.helloWorld2 = helloWorld2;
}


public void setAttr1(String message){
this.attr1 = message;
}

public void getAttr1(){
System.out.println("getAttr1 == " + attr1);
}
public void getH(){
helloWorld2.getAttr2();
}
}

Autowiring 工作正常。

现在我想将我的 bean 移至配置类。但是如何移动代码以便 Autowiring 工作呢?

我已经尝试过这样的方法,但它不起作用

@Configuration
public class Config {
@Bean
public HelloWorld helloWorld(){
HelloWorld a = new HelloWorld();
a.setAttr1("Demo Attr1");
return a;

}

@Bean
public HelloWorld2 helloWorld2(){
HelloWorld2 a = new HelloWorld2();
a.setAttr2("Demo Attr2");
return a;
}
}

最佳答案

我认为您想要实现的是将 HelloWorld2 实例注入(inject)到创建 HelloWorld @Bean 的方法中?

这应该可以做到:

@Configuration
public class Config {
@Bean
public HelloWorld helloWorld(HelloWorld2 helloWorld2){
HelloWorld a = new HelloWorld(helloWorld2);
a.setAttr1("Demo Attr1");
return a;

}

@Bean
public HelloWorld2 helloWorld2(){
HelloWorld2 a = new HelloWorld2();
a.setAttr2("Demo Attr2");
return a;
}
}

这可能是这些问题的重复:

关于java - 使用配置类时 Spring Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42281753/

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