gistfile1.txt Spring IOC容器:原本由程序员自己创建的对象改由Spring来创建和管理,控制反转,依赖注入--BeanFactory:是spring的核心工厂,核心容器管理类--Resource resource=new PathMatchingResourcePatternRes
Spring IOC容器:原本由程序员自己创建的对象改由Spring来创建和管理,控制反转,依赖注入
-->BeanFactory:是spring的核心工厂,核心容器管理类
-->Resource resource=new PathMatchingResourcePatternResolver().getResource("application.xml");
-->BeanFactory factory=new XmlBeanFactory(resource);
-->ApplicationContext是由BeanFactory生产,用来管理所有bean和容器类,相比BeanFactory更加完善
-->ApplicationContext context=new ClassPathXmlApplicationContext("application.xml"); 类路径
-->ApplicationContext context=new FileSystemXmlApplicationContext("src/application.xml"); 项目路径
-->(不推荐)ApplicationContext context=new AnnotationConfigApplicationContext(Beans.class); 注解完成,需要创建Beans,类:@Configuration,方法@Bean
-->WebApplicationContext是专门针对WEB开发而产生的管理类,他主要依附于web的application对象
-->1.需要配置初始化加载的application.xml文件
-->2.配置需要初始化的application参数信息,参数名必须是:contextConfigLocation
-->org.springframework.web.context.ContextLoaderListener监听器
-->或者使用org.springframework.web.context.ContextLoaderServlet的Servlet
-->3.log4的配置,application初始化参数必须是:log4jConfigLocation
-->org.springframework.web.util.Log4jConfigServlet
-->org.springframework.web.util.Log4jConfigListener
-->日志级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL
-->4.创建WebApplicationContexto
-->WebApplicationContextUtils.getWebApplicationContext(getServletContext());
-->Bean的配置
-->1.尽量使用id,而不是使用name(id和name皆不可重复,如果ID和Name都不给只能允许一个实例出现)
-->2.属性可以引用单个对象,使用ref
-->3.属性可以引用集合对象,使用list和set-[value-ref-bean],item-entry
-->Bean的创建方式有三种
-->1.直接创建对象
-->2.通过静态方法获取
-->class:静态方法类名(当前类不需要在IOC里面存在)
-->factory-method:静态方法名
-->3.通过对象方法获取
-->factory-bean:对象方法类(当前类必须存在IOC里面)
-->factory-method:非静态方法名
-->Bean生命周期
-->singleton 仅存一个实例,单例方式存在
-->prototype 每次getBean()都new一个实例
-->request 作用域和request绑定,每次请求创建一个实例,仅适用于WEB
-->session 作用域和session绑定,仅适用于WEB
-->globalSession 作用域和application绑定,仅适用于WEB
-->使用注解配置Bean
-->@Component 组件,和下面三个注解功能等效,但下面功能强大于我,推荐每层用自己的注解,如果实在分不清当前包奴属于那一层,请使用我
-->@Repository DAO层注解
-->@Service Service层注解
-->@Controller Controller注解
-->@Autowired 自动注入,按类型进行匹配
-->如果没找到会抛异常,如不想抛异常,请使用required属性
-->可使用在属性上,亦可在使用在方法上
-->@Qualifier 指定名称注入
-->可使用在属性上,亦可使用在方法上,亦可使用在方法参数上
-->@Scope 配置生命周期
-->必须在配置文件加入
