Spring
Franco蜡笔小强
小码农
展开
-
Spring定时之Quartz
Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz: 首先我们来写一个被调度的类:[java] view plain copy print?package com.somnus.quartz; public class QuartzJob{ public void exe...原创 2017-09-18 14:25:17 · 442 阅读 · 0 评论 -
Spring框架AOP源码剖析
今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西的源码剖析,作为多年的开发者,想必大家在面试的时候都被问过,你知道Spring框架AOP的底层实现机制吗,这可是很简单的噢,我们会说,如果某个类有接口就使用JDK动态代理,没有接口就用CGLIB动态代理,并且Spring也提供了可配置开关,不管有无接口都一律使用CGLIB动态代理,例如[转载 2017-10-23 22:26:42 · 266 阅读 · 0 评论 -
深入浅出Spring Aop
AOP联盟规范了一套用于规范AOP实现的底层API,通过这些统一的底层API,可以使得各个AOP实现及工具产品之间实现相互移植。这些API主要以标准接口的形式提供,是AOP编程思想所要解决的横切交叉关注点问题各部件的最高抽象。无论是Spring的AOP框架,还是开源的aspect框架,都是直接以这些API为基础所构建。Spring实现AOP都是基于接口形式的转载 2017-10-23 22:38:33 · 303 阅读 · 0 评论 -
Spring环境配置
研究spring3的时候发现一个很好用的特性:环境配置(spring2是否有此特性未知)官方示例代码如下: app-config.xml -->beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x转载 2017-10-25 19:05:43 · 247 阅读 · 0 评论 -
Spring4 对Bean Validation规范的新支持(方法级别验证)
Bean Validation standardizes constraint definition, declaration and validation for the Java platform.大体意思是:Bean Validation 标准化了Java平台的约束定义、描述、和验证。 详细了解请参考:http://beanvalidation.org/ Bean Val转载 2017-10-25 19:11:01 · 8429 阅读 · 0 评论 -
Spring中的<context:annotation-config/>配置
当我们需要使用BeanPostProcessor时,直接在Spring配置文件中定义这些Bean显得比较笨拙,例如: 使用@Autowired注解,必须事先在Spring容器中声明AutowiredAnnotationBeanPostProcessor的Bean:bean class="org.springframework.beans.factory.annotation.Auto转载 2017-10-25 19:11:57 · 289 阅读 · 0 评论 -
Resource路径通配符classpath和classpath*的区别
classpath 和 classpath* 区别:classpath:用于加载类路径(包括jar包)中的一个且仅一个资源,对于有多个匹配的也只返回一个classpath*:用于加载类路径(包括jar包)中的所有匹配的资源,所以如果需要多个匹配的请考虑"classpath*:"前缀举个简单的例子,在我的web.xml中是这么定义的:classpath*:META-INF/spr转载 2017-10-25 19:13:01 · 1928 阅读 · 0 评论 -
使用反射获取Spring的Bean
/** * Bean的转换类 * 会将形如APP_INFO_SERVICE的字符串转换成T类型appInfoService * Created by hollis on 15/7/21. */public class BeanTransverterT> implements BeanFactoryAware { private BeanFactory beanFactory;转载 2017-11-03 11:35:47 · 2501 阅读 · 0 评论 -
SpringBatch配置多线程step
SpringBatch批处理框架默认使用单线程完成任务的执行,但是他提供了对线程池的支持。使用tasklet的task-executor属性可以很容易的将普通的step转成多线程的step。task-executor:任务执行处理器,定义后采用多线程执行任务,需要考虑线程安全问题。 throttle-limit:最大使用线程池数目。如果我们希望示例中的 billingStep 以并转载 2017-11-03 11:36:45 · 14518 阅读 · 0 评论 -
Spring的事务管理机制
在我的博客(http://www.hollischuang.com/)中,多篇文章介绍了事务相关的内容,其中包括数据库的事务的相关介绍、分布式事务的相关介绍以及在Spring中使用注解进行事务的配置方式等。本文在以上文章的基础上,一起来学习一下Spring中对事务的支持——Spring的事务管理机制。Spring对事务管理的支持与EJB类似,Spring提供了对编码式和声明式事务管理的转载 2017-11-03 11:38:57 · 340 阅读 · 0 评论 -
SpringBean生命周期详解
在Spring中 Bean 可谓是一个核心的元素,当我们结合Spring进行编程的时候也离不开Bean,面对这样重要的一个角色,了解其生命周期和该生命周期所涉及的环节对我们更加熟练灵活地使用Bean是很有Bean必要的,下面我们就来详细分析下Bean的生命周期吧。生命周期流程图 我们先通过一个流程图,对Bean的生命周期先做一个整体的认识和了解。若容器实现了流程图中涉及的接口,程序将按照以上流程...转载 2018-05-07 18:44:34 · 352 阅读 · 0 评论 -
Spring:解读Spring IOC源码原理,读者一篇就够了
Spring IOC设计原理解析:本文乃学习整理参考而来一、 什么是Ioc/DI? 二、 Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三、 IoC容器的初始化 1、 XmlBeanFactory(屌丝IOC)的整个流程 2、 FileSystemXmlApplicationContext 的IOC容器流程 1、高富帅IOC解剖 2、 设置资源...转载 2018-05-24 16:20:05 · 781 阅读 · 0 评论 -
SpringAop原理,SpringMVC过程
Spring AOP ,SpringMVC ,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以。但今天笔者带大家一起深入浅出源码,看看他的原理。以期让印象更加深刻,面试的时候游刃有余。Spring AOP 原理简单说说 AOP 的设计: 每个 Bean 都会被 JDK 或者 Cglib 代理。取决于是否有接口。 每个 Bean 会有多个“方法拦截器”。注意:拦截器...转载 2018-12-05 11:23:14 · 367 阅读 · 0 评论 -
Spring AspectJ切入点语法详解
定义过滤切入点函数时,是直接把execution已定义匹配表达式作为值传递给通知类型的如下:除了上述方式外,还可采用与ApectJ中使用pointcut关键字类似的方式定义切入点表达式如下,使用@Pointcut注解:使用@Pointcut注解进行定义,应用到通知函数afterDemo()时直接传递切点表达式的函数名称myPointcut()即可,比较简单,下面接着介绍切点指示符。转载 2017-10-31 09:43:52 · 302 阅读 · 0 评论 -
使用Spring实现读写分离(MySQL实现主从复制)
我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案, 其中一个是主库,负责写入数据,我们称之为:写库; 其它都是从库,负责读取数据,我们称之为:读库;那么,对我们的要求是:读库和写库的数据一致;写数据必须写到写库;读数据必须到读库;解决读写分离的方案有两种:应用层解决和中间件解决。转载 2017-10-31 09:36:59 · 223 阅读 · 0 评论 -
Spring中相关名词解释
1、SpringIOC是控制反转,那么哪些方面的控制翻转了?获得依赖对象的过程被反转了。控制反转后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入,于是“控制反转”还叫“依赖注入”(DI)。通俗理解:IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或原创 2017-09-18 14:28:26 · 1522 阅读 · 0 评论 -
Struts1、Struts2、Hibernate、Spring框架工作原理介绍
Struts1工作原理Struts1工作原理图1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面向对象思想) 2、发送请求:用户提交表单或通过URL向WEB服务器提转载 2017-09-18 15:37:49 · 894 阅读 · 0 评论 -
在Spring中配置jdbcTemplate
配置jdbcTemplate:在applicationContext中配置1、配置数据源 [html] view plain copy print?bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">原创 2017-09-18 15:49:52 · 416 阅读 · 0 评论 -
Spring事务管理(详解+实例)
标签:写这篇博客之前我首先读了《Spring in action》,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下:Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解1 初步理解理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机取100...转载 2017-09-27 09:28:58 · 340 阅读 · 0 评论 -
Spring对JDBC的支持JdbcTemplate模板类
概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式。 JdbcTemplate类通过模板设计模式帮助我们消除了冗长的代码,只做需要做的事情(即可变部分),并且帮我们做哪些固定部分,如连接的创建及关闭。转载 2017-10-30 09:24:44 · 505 阅读 · 0 评论 -
Spring中初始化bean和销毁bean的时候执行某个方法的详解
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过注解@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作[java] view plain copy import javax.annotation.PostConstruct;转载 2017-10-30 10:27:04 · 503 阅读 · 0 评论 -
Spring容器加载完毕干一件事情(利用ContextRefreshedEvent事件)
应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了Spring管理对象,我们这个类引用了其他类(可能是更复杂的关联),所以当我们去使用这个类做事情时发现包空指针错误,这是因为我们这个类有可能已经初始化完成,但是引用的其他类不一定初始化完成,所以发生了空指针错误,解决方案如下:1、写一个类继承Spring的ApplicationListener监听,并监控ContextRef转载 2017-10-30 10:35:48 · 839 阅读 · 0 评论 -
Spring基于事件驱动模型的订阅发布模式代码实例详解
事件驱动模型简介事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;理解它的几个关键点:首先是一种对象间的一对多的关系;最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方);当目标发送改变(发布),观察者(订阅者)就可以接收到改变;观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉;所以就松散耦合了它们之间的关系。接下来先看一转载 2017-10-30 10:38:26 · 531 阅读 · 0 评论 -
Spring的声明式事务和编程式事务详解
编程式事务:所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务:管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在转载 2017-10-30 11:11:10 · 2678 阅读 · 0 评论 -
Spring整合Mybaits实现ehcache 注解查询缓存
前言:EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点。ehcache官网:http://www.ehcache.org/ 可以下载文档看看,里面写的很清楚。主要的特性有:快速简单多种缓存策略缓存数据有两级:内存和磁盘,因此无需担心容量问题缓存数据会在虚拟机重启的过程中写入磁盘可以通过RMI、可插入API等方式进行分布式缓存具有缓存和缓存管理器的侦听接口支转载 2017-10-30 11:48:54 · 372 阅读 · 0 评论 -
Spring中@Async注解实现方法的异步调用
“异步调用”对应的是“同步调用”, 同步调用 指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行; 异步调用 指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。Spring为任务调度与异步方法执行提供了注解支持。通过在方法上设置@Async注解,可使得方法被异步调用。也就是说调用者会在调用时立即返回,而被调用方法的实际执行是交给Spring的Task转载 2017-10-30 11:51:25 · 1917 阅读 · 0 评论 -
Spring中@Autowired注解、@Resource注解的区别
Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。 @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。 @Resource装配顺序转载 2017-10-23 08:45:20 · 233 阅读 · 0 评论 -
聊聊Spring事务管理
如上所言,事务遵循ACID原则,A是原子性(atomicity);B是一致性(consistency),事务执行前后涉及到的相关数据保持一致;C是隔离性(isolation),事务正确提交之前结果不应被其他事务所见;D是持久性(durability),执行结果得到持久保存。这对于金融系统和交易类业务处理系统至关重要。面向单一事务资源(数据库或应用服务)的称之为本地事务,java可通过JDBC的转载 2017-10-30 14:12:09 · 281 阅读 · 0 评论 -
Spring事务的传播特性
Spring 事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务。结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷。其实这种是不认识 Spring 事务传播机制而造成的误解,Spring 对事务控制的支持统一在 TransactionDefinition 接口中描述,该接口有以下几个重要的接口方法:很明显,除了事务的传播行为外,事务的其它转载 2017-10-31 09:20:12 · 553 阅读 · 0 评论 -
Spring Session + Redis实现分布式Session共享
单个服务器的应用,Tomcat会将Session保存在本机内存中,但一旦涉及到分布式应用,如何实现不同服务器间的Session共享问题呢?目前比较主流的方式还是基于分布式缓存Memcached、redis实现,具体实现方式也有多种,像是:memcached-session-managertomcat-redis-session-managerSpring Session区别就是前两转载 2017-10-31 09:34:41 · 286 阅读 · 0 评论 -
Spring事务管理——AOP注解事务管理
数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的...原创 2017-11-03 11:33:41 · 703 阅读 · 0 评论