Spring框架总结(1)

Spring概述&XML配置

  1. 框架
    1. 表示层(控制)              业务层               持久层                 数据库
    2. servlet+jsp                      service                 dao                    mysql
    3. struts2,springMVC        spring           mybatis,hibernate
  2. Spring是一个一站式的框架;主要的思想有IOC,AOP;整合能力非常强大
  3. IOC:反转控制,管理组件和组件之间的依赖关系
  4. AOP:面向切面编程,把分散在各个模块中的相同的功能点拿出来,然后写一个,谁用就插在哪即可
  5. Spring特点:
    1. 轻量级:非侵入式的:pojo;plain old java object;基于Spring开发的应用中的对象可以不依赖于Spring的API
    2. 依赖注入:DI(跟IOC是一个东西,相对IOC而言这种表述更直接);组件间关系由第三方维护
    3. AOP
    4. 容器:Spring本身是一个容器(工厂),负责创建所有的对象及对象间关系
    5. 一站式:什么都能做
  6. 使用Spring开发第一个 Hello World
    1. 创建一个 maven 工程
    2. 加入 spring-context 依赖
    3. 在 pom 文件中增加编译插件  
      1.   <build>
              <plugins>
                  <!-- java编译插件 -->
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>3.2</version>
                      <configuration>
                          <source>1.7</source>
                          <target>1.7</target>
                          <encoding>UTF-8</encoding>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
    4. 新建核心配置文件applicationContext.xml
    5. 在核心配置文件中创建对象
    6. 编写测试类,创建工厂并获得对象
      1. 在一个类有多个对象的情况下获得对象不可取class而是要取id,但是要强制转换
        1. 例:
        2. 上图创建了同一个武器类的两个武器对象,此时不能再用class获取了:                                                                  Weapon w1 = (Weapon)factory.getBean("spear");
          Weapon w2 = (Weapon)factory.getBean("knife");
  7. IOC思想案例(反转控制;对象与对象之间的依赖关系不由任何一方控制,而是由第三方(IOC容器)控制)
    1. 在核心配置里直接给张飞配上一把武器(DI,依赖注入;第三方把武器注入给人;解耦),代替在测试类使用p.setWeapon()方法
    2. 上图 ref 用来引用其他的 bean,值为其他 bean 的 id
    3. test类直接调用p.attack()(Person类里有方法attack),而不需要先 set 了。
  8. bean 标记
    1. 作用:创建一个对象
    2. id:对象的唯一标识,不能重复,如未指定则默认使用类名作为id名
    3. name:对象名,可以有多个,用 "," 隔开
  9. Spring 容器
    1. BeanFactory 接口:基本接口
    2. ApplicationContext:应用上下文接口,BeanFactory 的子接口
    3. ClassPathXmlApplicationContext 类:从类路径中加载配置文件的容器;增加了refresh与close方法
  10. 依赖注入的方式
    1. 属性注入(调用 setter 方法;最常用)
      1. <property name="name" value="张飞"></property>
                <property name="age" value="18"></property>
                <property name="weapon" ref="spear"></property>
      2. 注:CDATA节:原样输出
    2. 构造器注入(调用构造方法)
      1. 首先对应的 vo 要有带参数的构造方法
      2. type 用于有构造器重载时(多个构造器)
      3. 如图里面仍有 property 标签,说明可以混合使用
    3. 工厂(不推荐)
  11. 内部 bean:可以在property属性中定义一个内部bean,这个bean只能在创建它的外部bean中使用:                                    <property><bean></bean></property>
  12. null 标签:在有默认值的类时,若想得到null,可这样操作:                                                                                                   <property><null></null></property>
  13. 集合之数组(Person类新增数组hobby)
  14. List(Person类新增List:skill)
  15. Set(Person类新增set<Weapon>:ws)
  16. Map(Person类新增map:score)
  17. 未完待续 ...

猜你喜欢

转载自blog.csdn.net/addkai/article/details/81189415