zoukankan      html  css  js  c++  java
  • spring框架

      

       起因:软件系统的业务逻辑超来越复杂.

    一. Spring概念

    1. spring是轻量级开源框架,在这之前有EJB(重量级的)  spring是一个容器框架,主要实现了ioc和aop思想.
    2. spring 的核心部分:

        (1) aop:面向切面编程,扩展功能不是修改源代码实现.

        (2) ioc:控制反转,促进了低耦合,管理对象,把对象的创建不是通过new 的方式实现,而是交给spring配置

               来创建对象.

    1. spring 是一站式框架.

    (1) spring javaEE三层(mvc)结构中,每一层都提供不同的解决技术.

                web层:springmvc.

                service层:springioc.

                dao层:spring jdbcTemplate.

    二. Spring作用

      降低耦合度

        程序之间的依赖关系

        类与类之间的依赖

        方法和方法之间的依赖

        解耦:降低程序间的依赖关系

        实际开发中:编译期不依赖,运行时依赖

      解耦的思路:

        使用反射创建对象,而不是直接new

        通过配置文件的方式获取要创建对象的全限定类名

        使用工厂模式获取对象

         程序之间的依赖关系不能完全消除,只能降低它们之间的依赖关系。

     

    三. Spring注解

       1. 管理bean对象

        @Repository

        @Service

        @Controller

        @Component

       2. 管理bean对象的依赖关系

        @Autowried

        @Resource

       3. @Autowried@Resource的区别

      1. Resourcejdk的一个注解而不是spring框架的,相反@Autowriedspring框架的注解
      2. AutowriedResource都可以根据类型和名称进行注入
      3. @Resource注解更灵活,可以通过nametype属性指定bean名称和类型  
      4. @Autowired通过required 可以设置为false,指定为非必注入属性

     AOP思想

        是一种全新的编程思想,是对OOP(面向对象编程思想)的补充

      1.   面向过程
      2.   面向对象
      3.   面向切面编程思想(AOP
      4.   面向函数
      5.   面向组件

      应用场景

        权限验证(拦截器)

        单元测试

        事务管理

        操作日志打印功能(某用户在什么时候执行了什么操作)

      面向切面思路

        在程序运行过程中,根据aop配置,把非核心业务逻辑代码,动态的切入方法的开始

        结束或方法执行的全过程的编程思想就称为面向切面编程思想。

      配置使用 

        1.注解的方式配置

    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

        2.XML方式来配置

    <!--配置aop 切面-->
        <aop:config>
            <!--配置切入点 id:给切入点命名,配置切面时要使用到-->
            <aop:pointcut id="pointOne" expression="execution(* com.sc.aop.UserDao.*(..))"></aop:pointcut>
            <!--<aop:pointcut id="pointOne" expression="execution(public void com.sc.aop.UserDao.*(String))"></aop:pointcut>-->
            <!--配置切面-->
            <aop:aspect ref="writeLog">
                <aop:before method="wr" pointcut-ref="pointOne"></aop:before>
            </aop:aspect>
    
        </aop:config>

     

     

    五个通知

        @Before  前置通知

        @After   后置通知

        @AfterReturning  返回通知

        @AfterThrowing  异步通知

        @Around  环绕通知

     

  • 相关阅读:
    socketserver
    socket进阶
    socket基础
    反射
    subprocess模块
    面向对象高级特性
    面向对象基础
    字典的高级特性
    *号的妙用
    logging模块
  • 原文地址:https://www.cnblogs.com/lin02/p/11469541.html
Copyright © 2011-2022 走看看