Spring入门

概念
  • Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核
Spring优势
  • 方便解耦,简化开发
  • AOP编程支持
  • 声明式事务的支持
  • 方便程序的测速
  • 方便集成各种优秀框架
  • 降低JavaEE Api使用难度
  • Java源码经典学习典范
Spring的快速入门
  • 导入坐标

  • 编写dao接口及实现类

  • 创建Spring核心配置文件

  • 在Spring配置文件中配置UserDaoImpl

  • 使用Spring的API获得Bean实例

    代码
    image-20200916231205135

    image-20200916231843172

Spring配置文件

Bean标签的基本配置

用于配置对象交由Spring来创建

默认情况下他调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功

基本属性:

  • id:Bean实例在Spring容器中的唯一标识
  • class:Bean的全限定名称
Bean标签的范围配置
  • scope:指对象的作用范围
    • singleton:默认,单例
      • Bean的实例化个数:1个
      • Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
      • Bean的生命周期
        • 对象创建:当应用加载时,创建容器时,对象就被创建了
        • 对象运行:只要容器在,对象一直活着
        • 对象销毁:当应用卸载时,销毁容器时,对象就被销毁了
    • prototype:多例的
      • Bean的实例化个数:多个
      • Bean的实例化时机:当调用getBean()方法时实例化Bean
      • Bean的生命周期
        • 对象创建:当使用对象时,创建新的对象实例
        • 对象运行:只要对象在使用,就会一直活着
        • 对象销毁:当对象长时间不用时,就会被Java的垃圾回收器回收
    • request:WEB项目中,Spring创建Bean对象并存入request域中
    • session:WEB项目中,Spring创建Bean对象并存入session域中
    • global session:WEB项目中,应用在Portlet环境,如果没有Portlet环境那么globalSession相当于session
Bean生命周期的配置
  • init_method():初始化方法
  • destory_method():销毁方法
  • 使用方式:
    • 类中声明方法
    • 在配置文件指定方法
Bean实例化三种方式
  • 无参构造方法实例
  • 工厂静态方式实例
  • 工厂实例方法实例
Bean依赖注入分析

因为Service包下的代码和Dao下的代码都在Spring容器中,而最终程序直接使用的是Service包下的代码,所以在Spring容器中,将Dao设置到Service内部

Bean的依赖注入概念

依赖注入(Dependency Injection):它是Spring框架核心IOC的具体实现

在编写程序时,通过控制反转,把对象的创建交给了Spring,但是代码中不可能出现没有依赖的情况。IOC解耦只是降低他们的依赖关系,但不会消除。例如:业务层调用持久层的方法

那这种业务层和持久层的依赖关系,在使用Spring之后,就让Spring来维护了。

简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取

两种方式:

  • set方式

    • 在Service方法中生成dao的set方法

    • 首先引入P命名空间

      xmlns:p="http://www.springframework.org/schema/p"

    • 修改配置文件:使用p:userDao-ref="userDao"

      <bean id="userService" class="service.Impl.UserServiceImpl" p:userDao-ref="userDao"></bean>

  • 有参构造函数实例Bean

    • 在Service方法中生成dao的有参构造函数和无参构造函数

    • 修改xml配置文件

      <bean id="userService" class="service.Impl.UserServiceImpl">
              <constructor-arg name="userDao" ref="userDao"></constructor-arg>
      </bean>

      此时的name为构造函数的参数名

Bean的依赖注入的数据类型
  • 三种数据类型

    • 普通数据类型

      • <property name="变量名" value="值" />
    • 引用数据类型

    • 集合数据类型

      • list

        <property name="list集合名">
          <list>
              <value>插入的数据值</value>
            </list>
        </property>
      • map

        <property name="map集合名">
          <map>
              <entry key="map的键" value-ref="引用值"></entry>
            </map>
        </property>
      • Properties

        <property name="文件名">
            <props>
              <prop key="p1">ppp</prop>
            </props>
        </property>
引入其他配置文件(分模块开发)

实际开发中Spring的配置内容非常多,将导致Spring配置很繁琐且体积巨大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载

<import resource="配置文件名" />

Last modification:September 17th, 2020 at 01:56 pm
如果觉得我的文章对你有用,请随意赞赏