- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 SpringMVC中在Filter中如何获取ApplicationContext对象
[方式一]package com.somnus.support.filter; import java.io.IOException; import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.annotation.WebFilter;import ja...
2017-10-31 09:54:58 2680
转载 Spring AspectJ切入点语法详解
定义过滤切入点函数时,是直接把execution已定义匹配表达式作为值传递给通知类型的如下:除了上述方式外,还可采用与ApectJ中使用pointcut关键字类似的方式定义切入点表达式如下,使用@Pointcut注解:使用@Pointcut注解进行定义,应用到通知函数afterDemo()时直接传递切点表达式的函数名称myPointcut()即可,比较简单,下面接着介绍切点指示符。
2017-10-31 09:43:52 297
转载 使用Spring实现读写分离(MySQL实现主从复制)
我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案, 其中一个是主库,负责写入数据,我们称之为:写库; 其它都是从库,负责读取数据,我们称之为:读库;那么,对我们的要求是:读库和写库的数据一致;写数据必须写到写库;读数据必须到读库;解决读写分离的方案有两种:应用层解决和中间件解决。
2017-10-31 09:36:59 215
转载 Spring Session + Redis实现分布式Session共享
单个服务器的应用,Tomcat会将Session保存在本机内存中,但一旦涉及到分布式应用,如何实现不同服务器间的Session共享问题呢?目前比较主流的方式还是基于分布式缓存Memcached、redis实现,具体实现方式也有多种,像是:memcached-session-managertomcat-redis-session-managerSpring Session区别就是前两
2017-10-31 09:34:41 279
转载 Spring事务的传播特性
Spring 事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务。结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷。其实这种是不认识 Spring 事务传播机制而造成的误解,Spring 对事务控制的支持统一在 TransactionDefinition 接口中描述,该接口有以下几个重要的接口方法:很明显,除了事务的传播行为外,事务的其它
2017-10-31 09:20:12 539
转载 聊聊Spring事务管理
如上所言,事务遵循ACID原则,A是原子性(atomicity);B是一致性(consistency),事务执行前后涉及到的相关数据保持一致;C是隔离性(isolation),事务正确提交之前结果不应被其他事务所见;D是持久性(durability),执行结果得到持久保存。这对于金融系统和交易类业务处理系统至关重要。面向单一事务资源(数据库或应用服务)的称之为本地事务,java可通过JDBC的
2017-10-30 14:12:09 264
转载 Spring中@Async注解实现方法的异步调用
“异步调用”对应的是“同步调用”, 同步调用 指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行; 异步调用 指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。Spring为任务调度与异步方法执行提供了注解支持。通过在方法上设置@Async注解,可使得方法被异步调用。也就是说调用者会在调用时立即返回,而被调用方法的实际执行是交给Spring的Task
2017-10-30 11:51:25 1903
转载 Spring整合Mybaits实现ehcache 注解查询缓存
前言:EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点。ehcache官网:http://www.ehcache.org/ 可以下载文档看看,里面写的很清楚。主要的特性有:快速简单多种缓存策略缓存数据有两级:内存和磁盘,因此无需担心容量问题缓存数据会在虚拟机重启的过程中写入磁盘可以通过RMI、可插入API等方式进行分布式缓存具有缓存和缓存管理器的侦听接口支
2017-10-30 11:48:54 360
转载 Spring的声明式事务和编程式事务详解
编程式事务:所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务:管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在
2017-10-30 11:11:10 2663
转载 Maven利用Profile构建不同环境的部署包
项目开发好以后,通常要在多个环境部署,像我曾经呆过的公司最多达5种环境:本机环境(local)、(开发小组内自测的)开发环境(dev)、(提供给测试团队的)测试环境(sit)、预发布环境(pre)、正式生产环境(prod),每种环境都有各自的配置参数,比如:数据库连接、远程调用的ws地址等等。如果每个环境build前手动修改这些参数,显然太不fashion.maven早就考虑到了这些问题,
2017-10-30 10:51:21 496
转载 Spring基于事件驱动模型的订阅发布模式代码实例详解
事件驱动模型简介事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;理解它的几个关键点:首先是一种对象间的一对多的关系;最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方);当目标发送改变(发布),观察者(订阅者)就可以接收到改变;观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉;所以就松散耦合了它们之间的关系。接下来先看一
2017-10-30 10:38:26 520
转载 Spring容器加载完毕干一件事情(利用ContextRefreshedEvent事件)
应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了Spring管理对象,我们这个类引用了其他类(可能是更复杂的关联),所以当我们去使用这个类做事情时发现包空指针错误,这是因为我们这个类有可能已经初始化完成,但是引用的其他类不一定初始化完成,所以发生了空指针错误,解决方案如下:1、写一个类继承Spring的ApplicationListener监听,并监控ContextRef
2017-10-30 10:35:48 827
转载 Java开发必会的Linux命令
作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用–help查看帮助或者直接通过google搜索学习。1.查找文件 fi
2017-10-30 10:30:56 403
转载 Spring中初始化bean和销毁bean的时候执行某个方法的详解
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过注解@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作[java] view plain copy import javax.annotation.PostConstruct;
2017-10-30 10:27:04 490
转载 Spring对JDBC的支持JdbcTemplate模板类
概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式。 JdbcTemplate类通过模板设计模式帮助我们消除了冗长的代码,只做需要做的事情(即可变部分),并且帮我们做哪些固定部分,如连接的创建及关闭。
2017-10-30 09:24:44 494
转载 Resource路径通配符classpath和classpath*的区别
classpath 和 classpath* 区别:classpath:用于加载类路径(包括jar包)中的一个且仅一个资源,对于有多个匹配的也只返回一个classpath*:用于加载类路径(包括jar包)中的所有匹配的资源,所以如果需要多个匹配的请考虑"classpath*:"前缀举个简单的例子,在我的web.xml中是这么定义的:classpath*:META-INF/spr
2017-10-25 19:13:01 1913
转载 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 277
转载 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 8414
转载 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 241
转载 深入浅出Spring Aop
AOP联盟规范了一套用于规范AOP实现的底层API,通过这些统一的底层API,可以使得各个AOP实现及工具产品之间实现相互移植。这些API主要以标准接口的形式提供,是AOP编程思想所要解决的横切交叉关注点问题各部件的最高抽象。无论是Spring的AOP框架,还是开源的aspect框架,都是直接以这些API为基础所构建。Spring实现AOP都是基于接口形式的
2017-10-23 22:38:33 292
转载 Spring框架AOP源码剖析
今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西的源码剖析,作为多年的开发者,想必大家在面试的时候都被问过,你知道Spring框架AOP的底层实现机制吗,这可是很简单的噢,我们会说,如果某个类有接口就使用JDK动态代理,没有接口就用CGLIB动态代理,并且Spring也提供了可配置开关,不管有无接口都一律使用CGLIB动态代理,例如[
2017-10-23 22:26:42 255
转载 Spring中@Autowired注解、@Resource注解的区别
Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。 @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。 @Resource装配顺序
2017-10-23 08:45:20 221
原创 NIO基础(3)-非阻塞式网络通信
一、阻塞与非阻塞传统的IO 流都是阻塞式的。也就是说,当一个线程调用read() 或write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降。Java NIO 是非阻塞模式的。当线程从某通道
2017-10-13 10:47:08 316
原创 NIO基础(2)-通道用法
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.Ma
2017-10-12 22:08:53 195
原创 NIO基础(1)-缓冲区用法
一、Java NIO 简介Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。二、Java NIO 与IO 的主要区别IO面向流(Stream Orie
2017-10-12 21:14:55 327
原创 IO基础(3)-IO对象流用法
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;
2017-10-12 20:40:36 257
原创 IO基础(2)-IO缓冲流及其他流用法
一、缓冲流为了提高数据读写的速度,JavaAPI提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组根据数据操作单位可以把缓冲流分为: BufferedInputStream和BufferedOutputStream BufferedReader和BufferedWriter缓冲流要“套接”在相应的节
2017-10-12 19:41:54 203
原创 IO基础(1)-File,IO流用法
一、主要内容java.io.File类的使用IO原理及流的分类文件流 FileInputStream / FileOutputStream / FileReader / FileWriter缓冲流BufferedInputStream /BufferedOutputStream /BufferedRea
2017-10-12 07:31:52 268
原创 JavaWeb笔记(7)
1. request.getParameter() VS request.getAttribute() 1). request.getParameter() 获取 GET、POST 请求的请求参数的值. 返回值一定是 String 类型. > 表单 > URL 后边的 ? 后面附着的值 index.jsp?name=tom2). request.getAt
2017-10-10 10:45:51 231
原创 JavaWeb笔记(6)
1. Filter:1). Filter 是什么 ?①. JavaWEB 的一个重要组件, 可以对发送到 Servlet 的请求进行拦截, 并对响应也进行拦截. ②. Filter 是实现了 Filter 接口的 Java 类.③. Filter 需要在 web.xml 文件中进行配置和映射. 2). 如何创建一个 Filter, 并把他跑起来①. 创建一个
2017-10-10 10:42:46 211
原创 JavaWeb笔记(5)
1. 相对路径和绝对路径:1). 为什么要解决相对路径的问题: 在有一个 Servlet 转发页面的情况下, 会导致相对路径的混乱. a.jsp: To B Page2ToBServlet: request.getRequestDispatcher("/dir/b.jsp").forward(request, response);注意, 此时点击 To B Page2
2017-10-10 09:33:23 200
原创 JavaWeb笔记(4)
1. 相对路径和绝对路径:1). 为什么要解决相对路径的问题: 在有一个 Servlet 转发页面的情况下, 会导致相对路径的混乱. a.jsp: To B Page2ToBServlet: request.getRequestDispatcher("/dir/b.jsp").forward(request, response);注意, 此时点击 To B Page2
2017-10-09 18:32:23 283
原创 JavaWeb笔记(3)
1. Session 的创建和销毁page 指定的 session 属性: 1). 默认情况下, 第一次访问一个 WEB 应用的一个 JSP 页面时, 该页面都必须有一个和这个请求相关联的 Session 对象. 因为 page 指定的 session 属性默认为 true2). 若把 session 属性改为 false, JSP 页面不会要求一定有一个 Sessio
2017-10-09 18:17:35 223
原创 JavaWeb笔记(2)
1. GenericServlet:1). 是一个 Serlvet. 是 Servlet 接口和 ServletConfig 接口的实现类. 但是一个抽象类. 其中的 service 方法为抽象方法2). 如果新建的 Servlet 程序直接继承 GenericSerlvet 会使开发更简洁.3). 具体实现:①. 在 GenericServlet 中声明了一个 S
2017-10-09 18:12:29 251
原创 Annotation注解-高级
一、Annotation高级特性@Retention java.lang.annotation.Retention型态可以在您定义Annotation型态时,指示编译程序该如何对待您的自定义的Annotation型态 预设上编译程序会将Annotation信息留在.class档案中,但不被虚拟机读取,而仅用于编译程序或工具程序运行时提供信息在使用Retention型
2017-10-09 14:32:53 260
原创 Annotation注解-基础
一、Annotation简介从Java5.0版发布以来,5.0平台提供了一个正式的annotation功能:允许开发者定义、 用自己的annotation类型。此功能由一个定义annotation类型的语法和一个描述annotation声明的语法,读取annotation的API,一个使用annotation修饰的class文件,一个annotation处理工具(apt)组成。
2017-10-09 10:43:38 799
原创 JavaWeb笔记(1)
1.阅读 startup.bat 文件, 发现启动 tomcat 服务器的是 catalina.bat 文件在命令行窗口直接输入 catalina, 提示如下: commands: debug Start Catalina in a debugger debug -security Debug Catalina with a securit
2017-10-04 19:18:29 237
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人