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 配置生命周期 -->必须在配置文件加入