【发布时间】:2016-07-13 03:29:30
【问题描述】:
我在春季创建了几个单例 bean。我在构造函数中添加了日志。我可以看到日志被打印了两次。
@Component
public class User{
public User() {
System.out.println(" Bean got initialized"+this);
}
private Integer userid;
private String username;
//getter and setter
}
我已经在 XML 中定义了 bean 并配置了自动扫描。
<context:component-scan base-package="com.demo" />
<bean id="user" class="com.demo.User"/>
因为我已经在上下文 xml 和包扫描中初始化了 bean,所以 bean 被初始化了两次。从类中删除@Component 后,我只看到一次日志。
请确认我的理解是否正确?
【问题讨论】:
-
注解是在 Spring 中引入的,因此我们不必显式地配置 xml 属性。当您使用@Component 时,这就是创建 User 类的 bean 的工作。所以当你使用@Component,并且还显式地创建一个bean“用户”时,它显然会创建两个实例