【发布时间】:2016-08-01 07:15:24
【问题描述】:
嗨,我想了解 bean 中的自动装配,我能够自动装配,但这里仍然得到空值是代码 sn-ps
用当前输出编辑了整个代码
@Component
public class A {
private String value;
private B b;
public void display() {
System.out.println(value);
System.out.println(b.m());
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public B getB() {
return b;
}
@Autowired
public void setB(B b) {
this.b = b;
}
}
B级
@Component
public class B {
private String b;
public void setB(String b) {
this.b = b;
}
public String m() {
return b;
}
}
configuration.java
@Service
@ComponentScan(basePackageClasses = A.class)
public class AppConfig {
@Autowired
public A setBean() {
A a = new A();
a.setValue("inside A");
return a;
}
@Autowired
public B setB() {
B b = new B();
b.setB("inside B");
return b;
}
}
主要
@ContextConfiguration(classes = AppConfig.class)
public class Application {
public static void main(String[] args) {
AnnotationConfigApplicationContext configApplicationContext = new AnnotationConfigApplicationContext(
AppConfig.class);
A app = (A) configApplicationContext.getBean("a");
app.display();
}
}
现在的问题是,我应该获取所有值,但我不是从每个 bean 获取 null 值, 那么为什么我将这个值设为 null,我该如何排序呢?
编辑
输出是
log4j:WARN 找不到记录器的附加程序 (org.springframework.core.env.StandardEnvironment)。 log4j:请警告 正确初始化 log4j 系统。 log4j:WARN 见 http://logging.apache.org/log4j/1.2/faq.html#noconfig 了解更多信息。 空空
编辑 调试后我发现,在配置类中,它按指定传递值,但在display() 中显示值时,它给出了 null
【问题讨论】:
-
你的类的包名是什么?
-
那是包名还是文件夹结构?
-
我的课程在
java包中,文件夹str 是test.java.A(A是课程) -
@Jens 我错过了什么吗?
-
@ComponentScan(basePackages = { "*.java" })必须在@Configuration注释文件中,而不是在@Service注释文件中。