packagecom.imooc.demo2; importorg.springframework.stereotype.Component; importjavax.annotation.PostConstruct; importjavax.annotation.PreDestroy; @Component("bean1") publicclassBean1 { @PostConstructpublicvoidinit(){ System.out.println("initBean..."); } publicvoidsay(){ System.out.println("say..."); } @PreDestroypublicvoiddestory(){ System.out.println("destoryBean..."); } }
<context:component-scanbase-package="com.imooc"/>
packagecom.imooc.demo2; importorg.junit.Test; importorg.springframework.context.ApplicationContext; importorg.springframework.context.support.ClassPathXmlApplicationContext; publicclassSpringDemo2 { @Testpublicvoiddemo1(){ ClassPathXmlApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext.xml"); Bean1bean1= (Bean1)applicationContext.getBean("bean1"); bean1.say(); applicationContext.close(); } }
运行结果:initBean... say... destoryBean...
packagecom.imooc.demo2; importorg.springframework.context.annotation.Scope; importorg.springframework.stereotype.Component; @Component("bean2") @Scope("prototype") publicclassBean2 { }
<context:component-scanbase-package="com.imooc"/>
packagecom.imooc.demo2; importorg.junit.Test; importorg.springframework.context.ApplicationContext; importorg.springframework.context.support.ClassPathXmlApplicationContext; publicclassSpringDemo2 { @Testpublicvoiddemo2(){ ClassPathXmlApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext.xml"); Bean2bean1= (Bean2)applicationContext.getBean("bean2"); Bean2bean2= (Bean2)applicationContext.getBean("bean2"); System.out.println(bean1==bean2); } }
运行结果(Ps:默认为单例,所以true):false
Ps:Bean实例化使用XML方式,属性注入用@注解方式。


