随笔分类 - 品尝Spring框架菜肴食行记
摘要:【事务概述】 1) 在JavaEE企业级开发的应用领域,为了保证数据的完整性和一致性,必须引入数据库事务的概念,所以事务管理是企业级应用程序开发中必不可少的技术。 2) 事务就是一组由于逻辑上紧密关联而合并成一个整体(工作单元)的多个数据库操作,这些操作要么都执行,要么都不执行。 3) 事务的四个关
阅读全文
摘要:1 2 3 6 7 8 9 10 11 12 13 14 15 16 22 23
阅读全文
摘要:【简介】 由于事务可以在行和表上获得锁,因此长事务会占用资源,并对整体性能产生影响。 如果一个事务只读取数据但不做修改,数据库引擎可以对这个事务进行优化。 超时事务属性:事务在强制回滚之前可以保持多久。这样可以防止长期运行的事务占用资源。 只读事务属性: 表示这个事务只读取数据但不更新数据, 这样可
阅读全文
摘要:【默认情况】 捕获到RuntimeException或Error时回滚,而捕获到编译时异常不回滚。 【设置途经】 1) 注解@Transactional 注解 ① rollbackFor属性:指定遇到时必须进行回滚的异常类型,可以为多个 ② noRollbackFor属性:指定遇到时不回滚的异常类型
阅读全文
摘要:【数据库事务并发问题】 假设现在有两个事务:Transaction01和Transaction02并发执行。 1) 脏读 ①Transaction01将某条记录的AGE值从20修改为30。 ②Transaction02读取了Transaction01更新后的值:30。 ③Transaction01回
阅读全文
摘要:【简介】 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。 事务的传播行为可以由传播属性指定。Spring定义了7种类传播行为。 事务传播属性可以在@Transactional注解的propagation属性
阅读全文
摘要:【在JDBC模板中使用具名参数】 1.在经典的JDBC用法中,SQL参数使用占位符?表示,并且受到位置的限制。定为参数的问题在于,一旦参数的顺序发生变化,就必须改变参数绑定。 2.在Spring JDBC框架中,绑定SQL参数的另一种选择是使用具名参数(named parameter) 3.具名参数
阅读全文
摘要:【Spring对JDBC的支持】 【JDBCTemplate简介】 1.为了是JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架。 2.作为Spring JDBC框架的核心,JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法。每个模板方法都
阅读全文
摘要:示例: applicationContext-xml.xml: 注:重点在代码里。 VlidationAspect.java: LoggingAspect.java: ArithmeticCalculator.java: ArithmeticCalculatorImpl.java: 运行结果:
阅读全文
摘要:1.定义一个方法,用于声明切入点表达式,一般该方法中再不需要加入其它代码。 2.然后使用@Pointcut来声明切入点表达式。 3.后面的其他通知直接使用方法名来引用当前的切入点表达式。 2.如果要在同包不同类中的方法中用切点表达式,如下: 3.如果要是在不同包中的类中使用,还需要在前面添加包名。
阅读全文
摘要:1.可以使用@Order注解指定切面的优先级,值越小优先级越高 示例: VlidationAspect.java: Main.java: 运行结果: 由结果可以看出,验证切面优先于日志切面。
阅读全文
摘要:【返回通知】 LoggingAspect.java: Main.java: 运行结果: 【异常通知】 1.只在连接点抛出异常时才执行异常通知。 2.将Throwing属性添加到@AfterThrowing注解中,也可以访问连接点抛出的异常。Throwable是所有错误和异常类的超类。所以在异常通知方
阅读全文
摘要:【后置通知】 1.后置通知是在连接点完成之后执行的,即连接点返回结果或者抛出异常的时候,下面的后置通知记录了方法的终止。 2、一个切面可以包括一个或者多个通知。 示例: LoggingAspect.java: Main.java: 运行结果: 假如将Main.java中的div方法中的第二个参数改为
阅读全文
摘要:【Spring AOP】 1.AspectJ:Java社区里最完整最流行的AOP框架。 2.在Spring2.0 以上的版本中,可以使用基于AspectJ注解或基于XML配置的AOP。 【在Spring中启用AspectJ注解支持】 1.要在Spring应用中使用AspectJ注解,必须在class
阅读全文
摘要:【Why AOP ?】 1.代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀。每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点。 2.代码分散:以日志需求为例,知识为了满足这个单一需求,就不得不在多个模块(方法)里多次重复相同的日志代码。如果日志需求发生变化,必须修改
阅读全文
摘要:Spring 4.x的新特性 1.结构 BaseRepository.java: BaseService.java: User.java: UserRepository.java: UserService.java: Main.java: 运行结果:
阅读全文
摘要:问:怎么用注解来配置bean与bean之间的引用关系? 【组件装配】 1.<context:component-scan> 元素还会自动注册AutowiredAnnotationBeanPostProcessor实例,该实例可以自动装配具有@autowired和@Resource、@Inject注解
阅读全文
摘要:【在classpath中扫描组件】 1.组件扫描(component scanning):Spring 能够从classpath下自动扫描,侦测和实例化具有特定注解的组件。 2.特定组件包括: --@Component:基本注解,标识了一个受Spring管理的组件。 --@Respository:标
阅读全文
摘要:这个FactoryBean是Spring提供的,它有三个方法(如下): 其中,getObject():返回Bean本身; getObjectType():返回Bean的实例; isSingleton():返回这个Bean是不是单例的。 beans-beanfactory.xml: CarFactor
阅读全文
摘要:【工厂方法(静态工厂方法&实例工厂方法)】 【通过调用静态工厂方法创建Bean】 1.调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中。当客户端需要对象时,只需要简单地调用静态方法,而不用关心创建对象的细节。 2.要声明通过静态方法创建的Bean,需要在Bean的class属性里指定拥
阅读全文

浙公网安备 33010602011771号