Spring笔记

8.15:

  1. ref 寻找当前配置文件中的bean
  2. bean的作用域:
    scope="singleton" 默认值(容器创建时创建bean,在整个生命周期内只创建一个bean,单例的)
    scope="prototype" 原型的(容器初始化时不创建bean,而在每次请求时创建一个bean实例,并返回)
  3. bean的继承和依赖

8.16

  1. 表达式语言SpEL,使用#{...}作为定界符,为bean属性的动态赋值提供便利。
  2. bean的生命周期:
    如果我们想在Spring容器中完成bean实例化、配置以及其他初始化方法前后要添加一些自己逻辑处理。我们需要定义一个或多个BeanPostProcessor接口实现类,然后注册到Spring IOC容器中。
    1:后置处理器的postProcessorBeforeInitailization方法是在bean实例化,依赖注入之后及自定义初始化方法(例如:配置文件中bean标签添加init-method属性指定Java类中初始化方法、
    @PostConstruct注解指定初始化方法,Java类实现InitailztingBean接口)之前调用
    2:后置处理器的postProcessorAfterInitailization方法是在bean实例化、依赖注入及自定义初始化方法之后调用
  3. bean的配置方式:通过全类名(反射),通过工厂模式(静态工厂方法,实例工厂方法),FactoryBean

8.17

  1. 扫描配置

  2. @Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理
    @Component是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能
    @Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。
    @Controller层是spring-mvc的注解,具有将请求进行转发,重定向的功能。
    @Service层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。
    用这些注解对应用进行分层之后,就能将请求处理,义务逻辑处理,数据库操作处理分离出来,为代码解耦,也方便了以后项目的维护和开发。


  3. 泛型依赖注入


  4. AOP面向切面编程
    使用基于AspectJ注解或基于XML配置的AOP
    AOP术语

    切面(Aspect):横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象

    通知(Advice):切面必须要完成的工作目标(Target):被通知的对象

    代理(Proxy):向目标对象应用通知之后创建的对象

    连接点( Joinpoint) :程序执行的某个特定位置:如类某个方法调用前、调用后、方法抛出异常后等。连接点由两个信息确定:方法表示的程序执行点;相对点表示的方位。例如ArithmethicCalculator add()方法执行前的连接点占执行点为ArithmethicCalculaton#add()方位为该方法执行前的位置

    切点( pointcut) : 每个类都拥有多个连接点:例如ArithmethicCalculator的所有方法实际上都是连接点,即连接点是程序类中客观存在的事务。AOP通过切点定位到特定的连接点。

    类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一对一的关系,一个切点匹配多个连接点,切点通过org.springframework.aop.Pointcut接口进行描述,它使用类和方法作为连接点的查询条件。

你可能感兴趣的:(Spring笔记)