当我们再配置文件中配置:
<bean id="user" class="cn.cxc.User"></bean>
测试:
public static void main(String[] args) { //1加载spring的配置文件,获取sping容器 ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml"); //2从spring容器中过去对象 User user1 = ac.getBean("user", User.class); User user2 = ac.getBean("user", User.class); User user3 = ac.getBean("user", User.class); //3测试 System.out.println(user1); System.out.println(user2); System.out.println(user3); //4关闭 ac.close(); }
会在控制台得到以下结果:
//注意结果不一定是这个,但三句肯定是一样的
cn.cxc.User@46d56d67
cn.cxc.User@46d56d67
cn.cxc.User@46d56d67
以上就是所说的单例模式,而非单例得到的结果肯定不一样。
正文:
由Spring管理的Bean,默认是单例的,也就是说:根据同一个Bean Id反复获取,得到的对象会是同一个对象!
可以在<bean>
节点中添加scope
属性,以配置是否单例,例如:
<!-- scope属性:作用域,常用取值可以是singleton或prototype,默认是前者,表示“单例”,后者表示“非单例” -->
<bean id="user" class="cn.cxc.spring.User" scope="prototype"></bean>