zoukankan      html  css  js  c++  java
  • Spring学习总结

    1. Ioc底层原理

    1. 1.       依赖注入
    2. 2.        
    3. 1.       创建对象的时候,向类里面属性里面设置值
    4. 2.        

    2.属性注入

     

     

     

     

     

    IOC和DI区别

    1. 1.       IOC:控制反转,把对象创建交给Spring进行配置
    2. 2.       DI:依赖注入,向类里面的属性中设置值
    3. 3.       关系: 依赖注入不能单独存在,需要在ioc基础之上完成操作
    4. 1.       实现思想:把加载配置文件和创建对象过程,在服务器启动的时候完成
    5. 2.       实现原理

    Spring加载配置文件实现原理

    (1)      ServletContext对象

    (2)      监听器

    (3)      具体使用:

    -          在服务器启动的时候,为每个项目创建一个ServletContext对象

    -          在ServletContext对象创建的时候,使用监听器可以具体到ServletContext对象在什么时候创建。

    -          使用监听器监听到ServletContext对象创建时候,加载spring配置文件,把配置文件

    -          配置对象创建

    -          把创建出来的对象放到ServletContext域对象里面(setAttribute方法)

    -          获取对象时候,到ServletContext域得到(getAttribute方法)

    Spring四个常用注解

    @Autowired 自动注入 ,可以实现注入属性

    @Resource(name=””) 注入属性第二个注解

    AOP

    (1)    aop概述

    (2)    aop底层原理

    (3)    aop操作相关术语

    aop概述

    1. 1.       aop :采用面向切面编程,扩展功能不修改源代码实现
    2. 2.       AOP 采取横向抽取机制,取代了传统纵向继承体系重复性代码
    3. 3.        

    aop底层原理

    底层使用的是动态代理方式实现

    aop操作相关术语

    Public class User{

      Public void add (){ }

      Public void update(){ }

      Public void delete() { }

      Public void findAll(){ }

    }

     

    连接点:类里面可以被增强的连接点,这些方法称为连接点

    Pointcut(切入点):在类里面可以有很多的方法被增加,比如实际操作中,只是增强了类里面add方法和update 方法,实际增强的方法称为切入点

    Advice(通知/增强)实际增强的逻辑,称为增强,比如扩展日志功能,这个日志功能称为增强

    前置通知:在方法之前执行

    后置通知:在方法之后执行

    异常通知:在方法出现异常

    最终通知:在后置之后执行

    环绕通知; 在方法之前和之后执行

    Aspect(切面):把增强应用到具体方法上面,这个过程称为切面

    把增强用到切入点的过程

    Target:增强方法所在的类就叫做目标对象

    Spring 的aop 操作

    1. 在spring 里面进行aop操作,使用aspectj实现

    (1)aspectj不是spring一部分,和spring一起使用进行aop操作

    (2)Spring2.0以后新增了对AspectJ的支持

    2.使用AspectJ 实现aop有两种方式

    (1)基于aspectj的xml实现

    (2)基于aspectJ 的注解的方式

    Aop的准备操作

    1.导入相关的Jar包

    2.创建Spring核心配置文件

     

    Log4j使用

    1 通过log4j可以看到程序中更详细的信息

    (1)经常使用log4j查看日志

    2 使用

    (1)导入log4j的jar

     

    Spring 事务管理

    事务概念

    1.事务概念

    2.事务特性

    (四个特性)(原子性,持久性,隔离性,一致性)

    3.不考虑隔离性产的读问题

     (1)幻读,脏读,不可重复读

    4.如何解决读的问题

    (1)设置隔离级别

     (2)隔离性是指多个事务之间不会产生影响

    Spring 事务管理

    2.spring事务管理的api

    3.具体接口实现类

    搭建转账环境

     

    Java 注解

    1. JDK 中的注解

    @Override (重写) @ Deprecated(过时的)@SuppressWarnings (忽略警告)

    自定义注解

    @Target({ElementType.METHOD,ElementType.TYPE})//元注解

    @Retention(RetentionPolicy.RUNTIME) //元注解

    @Inherited//元注解

    @Documented//元注解

    public@interfaceDescription {

       String desc();

       String author();

       int age() default 18;

     

    }

    1. 3.       如果注解只有一个成员变量,则成员名必须取名为value(),在使用时可以忽略成员名

    和赋值号(=

    1. 4.       成员类型是受限的,合法的类型包括原始类型以及String, Class, Annotation, Enumeration
    2. 5.       注解类可以没有成员,没有成员的注解称为标识注解
    3. 6.       注解的作用范围@Target 和声明周期@Retention

    (1)@Target 作用范围:包,类,字段,方法,方法的参数,局部变量

    (2)@Retention 生命周期: 源文件SOURCE, 编译CLASS ,运行RUNTIME

     

    解析注解

    1. 1.       使用反射

    package com.gylhaut.ioc;

    import java.lang.annotation.Annotation;

    import java.lang.reflect.Method;

     

    publicclass ParseAnn {

       publicstaticvoid main(String[] args) {

       try {

          //1加载类

          Class<?> c = Class.forName("com.gylhaut.ioc.Child");

          //找到类上的注解

          booleanisExist = c.isAnnotationPresent(Description.class);

          if(isExist){

            //拿到注解实例

             Descriptiond =   c.getAnnotation(Description.class);

            System.out.println(d.desc());

          }

          Method[]  ms = c.getMethods();

          for(Method m :ms){

            booleanfExist = m.isAnnotationPresent(Description.class);

            if(fExist){

               //拿到注解实例

               Descriptiond =   m.getAnnotation(Description.class);

               System.out.println(d.desc());

            }

          }

          for(Method m : ms){

             Annotation[] as = m.getAnnotations();

             for(Annotation a : as){

                if(ainstanceofDescription){

                   Descriptiond = (Description)a;

                   System.out.println(d.desc());

                }

             }

          }

       } catch (ClassNotFoundException e) {

          // TODO Auto-generated catch block

          e.printStackTrace();

       }

       } 

    }

    Spring JDBCTemplate

    5. 别忘了导入mysql 数据库驱动的jar包

  • 相关阅读:
    在controller间分享数据(第一种办法)
    AngularJS之Factory vs Service vs Provider
    directive和controller如何通信
    AngularJS 之Services讲解
    AngularJS心得体会
    int 和Integer
    2019天梯赛练习题(L2专项练习)
    2019天梯赛练习题(L1专项练习)
    Hash冲突的几种解决方法
    HashMap
  • 原文地址:https://www.cnblogs.com/gylhaut/p/9000140.html
Copyright © 2011-2022 走看看