目录
1、配置类
package com.atguigu.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Bean; import com.atguigu.bean.Person; @Configuration public class MainConfig2 { //默认是单实例的 /** * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE * @see ConfigurableBeanFactory#SCOPE_SINGLETON * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST request * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION sesssion * * @Scope:调整作用域 * 1、prototype:多实例的 * 【ioc容器启动并不会去调用方法创建对象放在容器中。每次获取的时候才会调用方法创建对象;】 * 2、singleton:单实例的(默认值): * 【ioc容器启动会调用方法创建对象放到ioc容器中。以后每次获取就是直接从容器(map.get())中拿】 * 3、request:同一次请求创建一个实例 * 4、session:同一个session创建一个实例 * */ //@Scope("prototype") @Bean("person") public Person person(){ System.out.println("给容器中添加Person...."); return new Person("张三", 25); } }
2、测试类
package com.atguigu.test; import java.util.Map; import org.junit.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.atguigu.bean.Person; import com.atguigu.config.MainConfig2; public class IOCTest { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class); @Test public void test02(){ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class); String[] definitionNames = applicationContext.getBeanDefinitionNames(); for (String name : definitionNames) { System.out.println(name); } System.out.println("ioc容器创建完成...."); Object bean = applicationContext.getBean("person"); Object bean2 = applicationContext.getBean("person"); System.out.println(bean == bean2); } }