• Spring--laobai1


    1 spring的概念  (spring:ioc对象工厂+aop。)
    apache推出的java企业框架,提供了基于ioc的对象工厂、aop功能及其他增强功能。
    2 控制反转(ioc):inversion of control。  削减计算机程序的耦合问题

    控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。

    应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。

    方法论:
    我们需要的对象,不是由我们自己创建,而是由外部容器事先准备好,我们需要时才去拿。
    --优点:专注业务,无需关注对象的创建。同时外部的容器允许对象具有可替代性,更加灵活。

    // A a = new A(???); //亲自去创建对象
    使用ioc后==>
    A a = factory.getBean("a")://从外部对象工厂去拿对象。
    a.test();

    spring框架提供了ioc的一种代码实现方式:di=依赖式注入(depency injection).
    综合应用了java的xml面向对象反射技术。

    class Superman
    {
    IFly tool; //持有抽象接口
    main()
    {
    sm.setTool(new Plane()/new Bird())
    }
    }



    3 spring的基础配置
    a 对象的生命周期   

    bean的生命周期:scope--singleton(默认)、prototype(原型)、session、request、


    singleton--单例。【默认】
    prototype--原型,每次获取都创建新的对象。
    request--和request对象生命周期一致。获得响应后释放。
    session--和session对象生命周期一致。setMaxInactiveInterval()//超过最大无活动时间就释放。
    或session.invalidate()

    b 对象工厂的延迟创建
    lazy-init = true. 默认是false,在创建工厂时自动创建。

    c 构造注入:本质上是通过分射调用有参构造函数
    <bean id="plane1" class="Plane" lazy-init="true">
    <constructor-arg>
    <value>入参1的值</value>
    </constructor-arg>
    <constructor-arg>
    <value>入参2的值</value>
    </constructor-arg>
    ...
    </bean>

    <bean id="" class="">
    <constructor-arg> <!--构造注入--> 调用的是有参构造函数来初始化属性值
    <value>
    </value>
    <ref>
    </ref>
    <bean>
    </bean>
    </constructor-arg>
    </bean>

    设值注入:本质上是通过反射调用setXxx方法
    <bean id="plane1" class="Plane" lazy-init="true">
    <property name="属性1名" value或ref/>
    <property name="属性2名" value或ref/>
    </bean>

    c 自动装配
    让spring自动完成多个对象间的装配关系
    no:默认,不自动装配
    byName:靠属性名和bean的ID进行识别
    byType:靠属性类型和bean的class进行识别。要保证 符合该type的bean唯一,否则会报错。
    constructor:靠构造函数入参的属性名进行识别


    4 spring复杂对象的装配

    a 拥有引用对象的数组:NBA拥有30支球队。 <list>标签
    b 拥有引用对象的map: SportsScore: <map>标签

     5、aop

    aspect oriented programming。 面向“切面”编程。对面向对象编程的“补充”。
    作用是在不修改源代码的前提下,给程序添加“业务无关”的公共功能。
    常用的公共功能:
    日志
    权限管理
    事务:支持事务的提交和回滚。有些框架,事务是必须的。
    注意点:业务类必须定义接口才能支持aop。

    aop的原理
    一种设计模式:代理模式: 静态代理、动态代理。


    aop的专用术语
    advice(通知):新的公共功能
    joinpoint(切点=织入点):通知插入代码的位置。
    pointcut(切线):所有的切点构成1条切线
    aspect(切面):切线+通知。
    weaving:织入。

     第三天:

    spring对数据持久化的支持
    1 提供了对jdbc的封装类(工具类) JDBCTemplate
    目的:不使用单独的持久层框架,减少数据库操作效率的牺牲。

    原理:利用spring定义数据源(DataSource)对象,对tomcat的连接池进行管理。

    步骤:a 建工程建立包
    b 导入3个jar包。(commons-collections.jarcommons-pool.jarmysql-connector-java-5.1.18-bin.jar)
    c spring向导生成xml文件
    d xml文件中配置数据源(连接池)
    e 编写dao类


    2 hibernate生成dao类
    缺陷:对于删除,修改,添加需要在业务层开启事务。


    3 提供了对Hibernate的封装类 HibernateDAOSupport

    a 先建工程建立包
    b 导入hibernate框架
    c 导入Spring框架(core,persistend core,aop)
    d 配置applicationContext.xml
    i sessinFactory--自动生成
    ii:配置dao对象,引用上面的sessionFactory

    e 书写dao代码(需要定义接口,实现类从HibernateDAOSupport派生)

    f 对于添加,修改及删除操作,必须使用spring的aop配置,将事务注入到dao的上一层,也就是biz类中
    注意:(1) 事务注入到biz层。
    (2) 在biz的上一层,也就是test类或控制器类通过try来知道是否执行成功。


    步骤:
    a 创建biz包
    加入biz和biz的实现类。
    b biz实现类中,持有抽象的dao;

    c 在application.xml中加入头

    <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation=
    "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


    d 在application.xml中,添加biz的bean,引用上面的dao

    e 在application.xml中,创建事务管理bean和tx:advice通知,指定add方法开启事务

    f 在application.xml中,通过aop配置切入。

  • 相关阅读:
    Yii2 DetailView小部件
    Yii2 数组助手类arrayHelper
    Yii2 查询构建器 QueryBuilder
    yii2 数据库和ActiveRecord
    Freemake Video Converter视频转换软件下载地址及去广告
    Photoshop独立安装包下载页面
    Photoshop快捷键整理
    json-lib和dom4j实现JSON转XML
    SpringMVC文件上传
    java http 伪造请求头
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6227382.html
Copyright © 2020-2023  润新知