- 浏览: 63462 次
- 性别:
- 来自: 重庆
最新评论
-
hangzhoujava:
能详细解释一下吗? 他们的优势和缺点,是怎么测试对比的?
CGLib动态代理原理及实现 -
851228082:
CGLib创建的动态代理对象性能比JDK创建的动态代理对象的性 ...
CGLib动态代理原理及实现 -
guooo:
很给力啊,解决一大问题,赞
JSP去空白行 -
wangfy1685:
这个不能算是原理,仅仅是使用。哥们!
JDK动态代理原理及实现
文章列表
用eclipse,在导入相应的包后(有人说不导包也有提示,因为默认的eclipse导入了jdk的包),eclipse会有代码提示功能。那么XML文件能不能也这样呢?其实也是可以的,只不过导包的地方不一样。下面以spring为例(虽然Myeclipse6.5中已经集成了,这里只是示范说明)。进入:window -> Preference... -> MyEclipse -> Editors -> XML ->XML Catalog
选择:选中“User Specified Entries”,点击“Add...”按钮
填入:
URI: 请选择本地文件系统上SPRI ...
<!--转自javaEye -->
JSP中由于引入包命令及其他处理,渲染出来的页面源代码很多换行。
以前有很多方法来解决,如
1、在编写源码中注意格式,多行并一行。这个编写比较麻烦,源码不好看。
2、自己写标签,在运行时去除空白行。虽然时间一般很短,但也是耗了时。
tomcat 6中天然支持这种功能
1、 在工程的web.xml上加上如下配置
<jsp-config><jsp-property-group><url-pattern>*.jsp</url-pattern><trim-directiv ...
JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。
简单的实现举例:
这是一个需要被代理的类,也就是父类,通过字节码技术创建这个类的子类,实现动态代理。
public class SayHello { public void say(){ System.out.println("hello ev ...
代理是基本的设计模式之一,它为你提供额外的或者不同的操作。JAVA动态代理比代理的思想更迈进了一步,在动态代理上所做的所有调用都会被重定向到单一的调用处理器上,它的工作是揭示调用的类型并且确定相应的对策,动态代理中,接口中声明的所有方法都被转移到一个集中的地方处理,也就是invoke()中。
定义目标接口:
public interface UserManager { public void addUser(String name,String password); public void findUser(String id);}
目标接口的实现类:
public c ...
Spring的ApplicationContext能够发布时间并且允许注册相应的事件监听器,因此他拥有一套完善的事件发布和监听机制。在事件体系中,除了事件和监听器以外,还有另外三个重要的概念:
1)事件源:时间的产生者,任何一个EventObject都必须拥有一个事件源;
2)事件监听器注册表:组件或框架的事件监听器必须有所依存,也就是说组件或框架必须提供一个地方保存时间监听器,这便是事件监听器注册表。一个事件监听器注册到组件或框架中其实就是保存在监听器注册表里面;
3)它是事件和事件监听器沟通桥梁,负责把事件通知给事件监听器。
Spring框架本身定义了三个事 ...
自定义属性编辑器必须继承 PropertyEditorSupport 类,实现其中的setAsText()方法,将字面值转换为属性类型的对象,再调用setValue()方法,设置转置后的属性对象。
public class CustomCarEditor extends PropertyEditorSupport{ @Override public void setAsText(String text) throws IllegalArgumentException { System.out.println("调用setAsText()方法"); if(tex ...
FactoryBean 与BeanFactory 名字相似,很容易产生误会,今天看书分析了一下FactoryBean,写一下这个接口的特性,与BeanFactory做一个区别。
FactoryBean对于Spring来说具有重要的地位,用户可以通过实现该工厂接口定制实例化Bean的逻辑。FactoryBean定义了三个接口方法:
1)Object getObject():返回由FactoryBean创建的Bean的实例,如果isSingleton()方法返回true,是单例的实例,该实例将放入Spring的缓冲池中;
2)boolean isSingleton*( ...
刚刚一个朋友问我,为什么JDBC连接数据库的时候 Class.forName()方法必须使用try-catch 或者add throws declaration。我写了三个类试验一下。
package com.song.ExceptionThrows;
public class MyException extends Exception{ }
package com.song.ExceptionThrows;
public class ThrowsException { public void throwExcepti ...
今天遇到一个测试,有道题涉及到文件读写,算法很容易实现但是时间久了没有用把文件读写的步骤忘了,所以特意来总结一下。
代码如下:
//文件输入
public static ArrayList<Meet> reader(){
int numbers;
String record = "";
ArrayList<Meet> meetList = new ArrayList<Me ...
JAVA反射机制可以从Class反射对象中获取构造函数,成员变量,方法类等类元素的反射对象,绕开语言访问检查可访问private的变量,同时可以在程序运行时对对象进行修改。反射技术是框架的核心基础技术之一。
...
BeanFactory中Bean的生命周期:
package com.Spring.BeanLifeCycle;
...
public class Car implements BeanFactoryAware, BeanNameAware, InitializingBean, DisposableBean { private String brand; private String color; private int maxSpeed;
private BeanFactory beanFactory; private String bea ...