zoukankan      html  css  js  c++  java
  • Spring框架学习

     1.注解开发:

     常用注解 :

     @Controller 用于控制层 web层, @Repository 用于持久层 dao层,@Transactional(readOnly = true) 注解事物控制,隔离级别最低的。只读用于service的实现类上。@Comonponent 注解中立的类上。

    @Resource 注入bean用,默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入;

    @Transactional(readOnly = false)在方法上使用表示事务可读写。

    2.AOP:

      用途:权限,事务,日志都可以用到。

      即面向切面编程。

      对哪些方法进行拦截,拦截进行怎样处理。

      spring中AOP的代理由spring的IOC容器负责生成、管理,其依赖关系也由IOC容器来负责管理;

      是其实是通过动态代理来实现业务逻辑的插入,是开发者在开发是不用关注其他与业务无关的点,通过代理的方式做到了插拔式操作。

        就是关注

      它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为“Aspect”切面。所谓切面,简单来说就是那些与业务不相关,却为业务模块所共同调用的逻辑或责任封装起来,以便减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

      

    3.IOC:

      控制反转,DI其实就是IOC的另外一种说法。

      理解:对于spring框架来说,就是由spring来控制对象的生命周期和对象间的关系;在系统运行中动态的向某个对象提供他所需要的对象,这一点是通过DI(依赖注入)实现的;DI是如何实现的呢,在Java1.3之后一个重要的特征就是反射,它允许程序在运行的时候动态的生成对象,执行对象的方法,改变对象的属性,spring就是通过反射来实现注入的。

      IoC其实是遵循了软件设计理念的依赖倒转原则,面向对象的设计就是为了实现软件的更好的复用行和扩展性,我们就必须降低我们每个pojo(实体类)的依赖关系,也就是解耦,耦合度低了,我们才能更好的重用和扩展。

       引入IOC的目的:

      (1):脱开,降低类之间的耦合;

      (2):倡导面向接口编程,实施依赖倒换原则;

      (3):提供系统可插入,可测试,可修改等功能。

      具体做法:

      (1):将bean之间的依赖关系尽可能转换为关联关系;

      (2):将对具体类的关联尽可能转化为对interface 的关联,而不是与具体的服务对象相关联;

      (3):

    4.事务:

      一、首先配置tx标签

      二、配置数据库连接池

      三、使用@Transactional注解来配置事务。

          参数名称:readOnly  设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认为false。

                  rollbackFor 当方法中抛出指定的异常(一个或多个),则进行事务回滚。

               noRollbackFor 当方法中抛出指定的异常(一个或多个),则不进行事务回滚。

                  propagation 用于设置事务的传播行为。

               isolation 用于设置底层数据库的事务隔离级别,通常选用数据库的默认隔离级别,基本不需要进行配置。

                  timeout 用于设置事务的超时秒数。

          注意:       @Transactional只能用在public修饰的类或方法上,用其他的不会报错但没有事务功能。 

                 建议在实现类上使用@Transactional注解,而不要使用在接口上,因为注解是不能被继承的。

                 其实正是 <tx:annotation-driven/>元素的出现 开启 了事务行为。

      事务的隔离级别:

        脏读:一个事务读取另一个事务未提交数据。

        不可重复读:在一个事务中,多次读取同一返回的结果有所不同,换句话说,后读取可以读到另一事务已提交的更新数据,相反,“可重复读”在同一事务中多次读取数据,能够保证读取数据一样,也就是后读取可以读取另一事务已提交数据。

        幻读:一个事务读取另一个事务insert数据。

      

    5.依赖注入(DI):

      用@Resource注入bean。

      自定义的bean会在第一次访问的时候实例化,在没有注入的情况下是不会实例化的。

      事务管理器没有注入实在什么时候注入的:一般是在启动Web容器时,自动装配ApplicationContext的配置信息。

      所谓依赖注入通常是指在运行期,由Spring容器动态地将对象注入到应用中、当spring容器启动后,创建并管理bean对象,以及销毁它。应用本身是不负责依赖对象的创建以及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到spring容器。控制权的转移就是所谓的反转。所以,我们常常看到IOC翻译为“控制反转”,但大多数人都习惯将它成为“依赖注入”。

      利用Java 的反射机制,spring还充当了工厂的角色,我们不需要自己建立工厂类。Spring的工厂类会帮我们完成配置文件的读取、利用反射机制注入对象等工作,我们可以通过bean的名称获取对应的对象。

      依赖注入的三种方式:

      一、set注入

      二、构造器注入

      三、静态工厂的方式注入

  • 相关阅读:
    求最短路径的三种算法: Ford, Dijkstra和Floyd
    Huffman树与编码
    Logistic回归模型和Python实现
    LibSVM for Python 使用
    支持向量机原理
    朴素贝叶斯分类器及Python实现
    Http协议简介
    介绍50个 WordPress 动作挂钩
    决定如何开发你的WordPress主题框架
    WordPress 主题框架是如何工作的
  • 原文地址:https://www.cnblogs.com/ycmxm/p/6943432.html
Copyright © 2011-2022 走看看