随笔分类 -  Spring

摘要:使用JDK创建代理有一个限制,即他只能为接口创建代理实例,这一点我们可以从Proxy的接口newProxyInstance(ClassLoader loader,Class[] interfaces,InvocationHandler h)的方法签名中就看得很清楚:第二个参数interfaces就是需要代理实例实现的接口列表。对于没有通过接口定义业务方法的类,如何动态创建代理实例呢?JDK的代理技术显然已经黔驴技穷,CGLib作为一个替代者,填补了这个空缺。 CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,并顺势织入横切逻辑。... 阅读全文
posted @ 2012-12-17 10:18 行在途中 阅读(391) 评论(0) 推荐(0)
摘要:JDK动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。其中InvocationHandler动态创建一个符合某一接口的实例,生成目标类的代理对象。首先写一个接口ForumService.java及其实现类ForumServiceImpl.java ,主要包括二个方法,删除主题removeTopic 和 删除removeForum。代码如下:public class ForumServiceImpl implements ForumService { @SuppressWarnings("static-access&qu 阅读全文
posted @ 2012-12-10 10:19 行在途中 阅读(295) 评论(0) 推荐(0)
摘要:在项目中,如果需要一次性插入或更新多条记录,当然可以简单地通过多次调用update()方法完成任务,但这不是最好的实现方案。更好的选择是使用JDBCTemplate批量数据更改的方法。一般情况下,后者拥有更好的性能,因为更新的数据将被批量发送到数据库中,它减少了对数据库访问的次数。JDBC有2个批量数据操作的方法: public int[] batchUpdate(String[] sql) 多条SQL语句组成一个数组,注意此处的sql语句不能带参数,该方法以批量方式执行这些SQL语句。Spring在内部使用JDBC提供的批量更新API完成操作,如果底层的JDBC Driver不支持批... 阅读全文
posted @ 2012-11-26 02:37 行在途中 阅读(8547) 评论(2) 推荐(0)
摘要:在项目中,我们经常遇到这样的情况,表主键值设置为自增长,也就是主键值不在应用层产生,而是在新增记录时,由数据库产生。当我们新增加一条记录时,为了唯一定位到该记录,我们需要获得该记录的主键值,而这需要在数据库保存数据后才能从数据库中返回主键值。当我们使用Hibernate作为持久化框架时,新对象在持久化之后,主键值会自动绑定到对象上,但是当我们使用JDBC的时候要如何获得主键值。 在JDBC3.0规范中,当新增记录时,允许将数据库自动产生的主键值绑定到Statement或PreparedStatement中。使用Statement时,可以通过以下方法绑定主键值: int executeU... 阅读全文
posted @ 2012-11-26 01:56 行在途中 阅读(8430) 评论(0) 推荐(0)
摘要:Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和applicationContext.xml二个配置文件,通常会出现以下几个配置 1.<context:annotation-config /> 它的作用是隐式地向Spring容器注册 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor 这4个BeanPostPr 阅读全文
posted @ 2012-11-04 23:31 行在途中 阅读(9848) 评论(0) 推荐(2)
摘要:优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用 *.do 、 *.xhtml等方式。这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL。如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。如何让Spring框架能够捕获所有URL 阅读全文
posted @ 2012-10-28 18:07 行在途中 阅读(60185) 评论(6) 推荐(25)
摘要:Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作。如果想要使用Spring的文件上传功能,需要先在上下文中配置MultipartResolver。第一步:配置MultipartResolver使用CommonsMultipartResolver配 阅读全文
posted @ 2012-10-28 02:44 行在途中 阅读(11436) 评论(0) 推荐(0)
摘要:1.自定义注解类实验目的是希望使用NeedTest注解对业务类的方法进行标注,以便测试工具可以根据注解情况激活或关闭对业务类的测试。在编写好NeetTest注解类后,就可以在其他类中使用了Java新语法规定使用@interface修饰定义注解类,一个注解类可以拥有多个成员,成员声明和接口方法声明类似。成员声明有以下几点限制:(1)成员以无入参无抛出异常的方式声明。(2)可以通过default为成员指定一个默认值。(3)成员类型是受限的,合法的类型包括原始类型及其封装类、String、Class、enums、注解类型,以及上述类型的数组类型。Ps: @Retention(RetentionPol 阅读全文
posted @ 2012-10-22 11:39 行在途中 阅读(511) 评论(0) 推荐(0)
摘要:第一步:写自己要定时执行的类及方法package com.info.target;public class Target1 { public void targetMethod1() { System.out.println("10秒执行一次target1对象的targetMethod1方法!"); }}package com.info.target;public class Target2 { public void targetMethod2() { System.out.println("20秒执行一次target2对象的targetMethod... 阅读全文
posted @ 2012-10-07 23:50 行在途中 阅读(264) 评论(0) 推荐(0)
摘要:public class CommonInterceptor extends HandlerInterceptorAdapterimplements InitializingBean { static Log log = LogFactory.getLog(CommonInterceptor.class); public void afterPropertiesSet() throws Exception { log.debug("=======初始化CommonInterceptor拦截器========="); } @Override ... 阅读全文
posted @ 2012-10-07 23:44 行在途中 阅读(710) 评论(0) 推荐(0)
摘要:Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用<!-- json--><dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.8.1</version></dependency><dependency> <groupI 阅读全文
posted @ 2012-10-07 23:18 行在途中 阅读(730) 评论(0) 推荐(0)
摘要:如果你的DispatcherServlet拦截*.do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。目的:可以正常访问静态文件,不要找不到静态文件报404。方案一:激活Tomcat的defaultServlet来处理静态文件Xml代码<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern></serv 阅读全文
posted @ 2012-10-07 23:04 行在途中 阅读(988) 评论(0) 推荐(0)