zoukankan      html  css  js  c++  java
  • Spring——基本概念(IOC,DI思想),Spring配置文件(XML),属性注入,Spring与Web项目结合

    Spring简介

    spring是一站式框架;正是因为spring框架性质是属于容器性质的,容器中装什么对象就有什么功能,所以可以一站式,不仅不排斥其他框架,还能帮其他框架管理对象。

    • aop支持
    • ioc思想
    • spring jdbc
    • aop 事务
    • junit 测试支持

    Spring的搭建

    1、导包

    com.springsource.org.apache.log4j-1.2.15.jar(可选)

    2、创建一个对象

    3、书写配置注册对象到容器

    位置任意(建议放到src下)

    配置文件名任意(建议applicationContext.xml)

    导入约束

    4、代码测试

    Spring的基本概念

    1、IOC思想(由自己创建改成了由程序创建)

    2、DI思想

    3、applicationContext&BeanFactory

    BeanFactory接口

    • spring原始接口.针对原始接口的实现类功能较为单一
    • BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象

    ApplicationContext

    • 每次容器启动时就会创建容器中配置的所有对象.并提供更多功能
    • 丛类路径下加载配置文件:ClassPathXmlApplicationContext
    • 从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")

    结论:web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory

    Spring配置

    1、Bean元素下的基本属性

    <!-- 将User对象交给spring容器管理 -->
    <!-- Bean元素:使用该元素描述需要spring容器管理的对象
    		class属性:被管理对象的完整类名.
    		name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象.  
    				可以重复.可以使用特殊字符.
    		id属性: 与name属性一模一样. 
    				名称不可重复.不能使用特殊字符.
    		结论: 尽量使用name属性.
    		scope属性:
    			singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例
    			prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.
    			request:web环境下.对象与request生命周期一致.
    			session:web环境下,对象与session生命周期一致.
      -->
    <bean  name="user" class="cn.itcast.bean.User" scope="singleton" ></bean>
    <!-- 导入其他spring配置文件 -->
    <import resource="cn/itcast/b_create/applicationContext.xml"/>
    	
    </beans>
    

    2、创建对象的三种方式

    a.空参构造方式

    b.静态工厂(了解)

     

    c.实例工厂(了解)

    3、属性注入

    复杂类型注入

    1)数组

    2)集合

    3)字典

    4)properties(键值全是String类型的字典)

    Spring与Web项目结合

    1、导包

     spring-web-4.2.4.RELEASE.jar  // 多加一个这个包

    2、 封装Dao和Service对象(注意:service中提供set方法)

    3、获取容器

    注:这是错误的示范.导致每次请求都创建新的容器

    3.1、配置容器随项目启动

    <!-- 可以让spring容器随项目的启动而创建,随项目的关闭而销毁 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 指定加载spring配置文件的位置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-config.xml</param-value>
    </context-param>
    

    4、获取容器

    //获得spring容器=>从Application域获得即可,Spring为我们封装了一个方法可以直接获取,但需要servletContext对象(获得application域)
    
    //1 获得servletContext对象
    ServletContext servletcontext = ServletActionContext.getServletContext();
    //2.从context中获得ac容器
    WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(servletcontext);
    //3.从容器中获得CustomerService
    CustomerService service = (CustomerService) ac.getBean("customerService");
    

      

  • 相关阅读:
    面向对象设计原则之接口隔离原则
    面向对象设计原则之开闭原则
    [OOD]违反里氏替换原则的解决方案
    错误程序
    error: ‘for’ loop initial declarations are only allowed in C99 mode
    函数模板
    查找
    队列类模板
    栈类模板
    单链表的结点类模板
  • 原文地址:https://www.cnblogs.com/x54256/p/8482346.html
Copyright © 2011-2022 走看看