zoukankan      html  css  js  c++  java
  • Spring核心概念

    1:Java企业级框架
    企业级系统
    大规模:用户数量多、数据规模大、功能众多
    性能和安全要求高(反应效率,用户操作)
    业务复杂
    灵活应变(需求随时改变,框架耦合度低可以随时替换更简洁更轻量)

    2:一些小的功能,小的亮点是组成功能的亮点
    Spring专心做事(将连接数据库,页面交互用Spring进行操作,然后
    专心进行编码)

    3:Spring
    轻量级框架, Java EE的春天,当前主流框架
    目标
    使现有技术更加易用,推进编码最佳实践

    设计理念:

    Spring是面向Bean的编程

    内容
    IoC容器(控制反转(依赖注入))
    AOP实现(面向切面开发)
    数据访问支持(ORM)(简化JDBC/ORM 框架,声明式事务)
    Web集成(Spring MVC)(表示层)


    4:面向切面:
    经常有,并且与业务逻辑无关的东西,进行切面插入


    5:Spring体系结构
    Benas JavaBenas
    Core loc中的C
    Context上下文
    ExpressionLanguage语言


    6:Spring核心技术:

    依赖注入(拿数据的过程): 将对象放在WEB中然后调用时到WEB中去寻找调用
    控制反转(名词):将程序中的耦合放到程序外去进行调用操作


    控制反转:loC:Inversion of Control
    依赖注入:DI:Dependency Injection
    (将组件的构建(本类)和使用(调用)分开,设值注入,构造注入)
    面向切面编程:AOP:Aspect Oriented Programming
    补:
    面向对象Oop(Object Oriented)

    7:Spring的优点(解耦
    低侵入式设计
    独立于各种应用服务器
    依赖注入特性将组件关系透明化,降低了耦合度
    面向切面编程特性允许将通用任务进行集中式处理
    与第三方框架的良好整合


    8:控制反转主要思想:

    将组件对象的控制权从代码本身转移到外部容器
    组件化的思想:分离关注点,使用接口,不再关注实现
    依赖的注入:将组件的构建和使用分开
    目的:解耦合。实现每个组件时只关注组件内部的事情
    要点:明确定义组件间的接口

    9:Spring的设计模式,在哪使用,什么时候使用


    设值注入:
    通过setter访问器实现
    灵活性好,但setter方法数量较多
    时效性差
    通过无参构造实例化

    构造注入:
    通过无参构造实例化
    灵活性差,仅靠重载限制太多
    时效性好
    通过匹配的构造方法实例化,但建议保留无参构造

    注:使用p命名空间注入属性值

    p 命名空间的特点:使用属性而不是子元素的形式配置Bean的属性,从而简化了配置代码

    语法:

    对于直接量(基本数据类型、字符串)属性:p:属性名="属性值" 对于引用Bean的属性:p:属性名-ref="Bean的id"

          

     

    10:
    AOP的目标:让我们可以“专心做事”
    Ioc的目标:解耦

    11:
    AOP原理
    将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决
    采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,
    增加新的功能
    (代理机制:spring进行解决)

    12:增强处理:
    代理对象方法前后都可以插入代码,这些代码就是增强处理

    13:面向切面编程:是一种通过预编译和运行期动态代理的方法实现在不能修改
    源代码的情况下给程序添加功能的技术

    14:AOP相关术语:
    增强处理:Advice
    (前置增强,后置增强,环绕增强、异常抛出增强、最终增强等类型)
    切入点 Pointcut(连接点的查询条件,进入的点)
    连接点 Join Point(公共部分(增强操作)和核心部分的连接)
    切面 Aspect
    目标对象 Target object(核心代码)
    AOP代理 AOP proxy
    织入 Weaving

    15:
    proceedingjoinpoint环绕增强参数
    getArgs参数数组方法
    getmessage抛出异常方法


    aop:before前置增强
    aop:after-throwing抛出异常

    特点:

    在目标方法抛出异常时织入增强处理 ,可拔插的异常处理方案

    aop:after最终增强

    特点:

    无论方法是否抛出异常,都会在目标方法最后织入增强处理,即:该增强都会得到执行

    类似于异常处理机制中finally块的作用,一般用于释放资源

    可以为各功能模块提供统一的,可拔插的处理方案

    aop:around环绕增强

    特点:

    目标方法前后都可织入增强处理

    功能最强大的增强处理

    可获取或修改目标方法的参数、返回值,可对它进行异常处理,甚至可以决定目标方法是否执行


    aop:after-returning后置增强

    16:组件化注解:
    <context:component-scan base-package=""/>:

    17:注解方式将Bean的定义信息和Bean实现类结合在一起,Spring提供的注解有

    @Component:实现Bean组件的定义

    @Repository :用于标注DAO类

    @Service :用于标注业务类 @Controller :用于标注控制器类

     在XML配置文件中编写<bean id="userDao" class="dao.impl.UserDaoImpl"/>

    18:使用@Autowired注解实现Bean的自动装配,默认按类型匹配,

           可以使用@Qualifier指定Bean的名称 

              (可以对类的成员变量进行标注,也可以对方法的入参进行标注)

    19:指定需要扫描的包时,多个包用逗号隔开

    20:使用@Resource注解实现组件装配,默认按名称匹配

    21:使用注解定义前置增强和后置增强实现日志功能

      @Aspect @Before @AfterReturning @AfterThrowing @After @Around

      编写Spring配置文件,完成切面织入 <aop:aspectj-autoproxy />:启用对于@AspectJ注解的支持

     

  • 相关阅读:
    XSS漏洞攻击
    String 是值类型还是引用类型
    客户端验证不能代表服务器端验证
    PowerDesigner参照(Reference)笔记
    LazyAllocate(缓分配)与PreAllocate(预分配)
    我在delphi7下调用微软的Web Services的心得.(可以返回数据集)
    C Dungeon Master
    TimeQuest笔记
    XPStyle Button
    对XML文件的CRUD(添加,读取,搜索,修改,删除)的例子
  • 原文地址:https://www.cnblogs.com/zjx-959/p/13853273.html
Copyright © 2011-2022 走看看