AOP
1,先做注解Aspect,它的值限定成也必须是注解
2,建立Proxy接口,ProxyChain类和ProxyManger类。
ProxyManager是用来执行代理(CGlib方式)的代码(Proxy和ProxyChain)的。ProxyChain和Proxy嵌套调用执行代理代码。
Proxy:作用是来定义一个个增强(也叫通知)。
ProxyChain:作用是来按顺序调用Proxy(也就是增强),在把Proxy都调用完之后,调用被代理的原始方法(也就是接入点)(调用原始方法是使用Cglib的方式)。
ProxyManager:作用是为每个要被代理的类,用Cglib和ProxyChain生成一个代理调用,并执行ProxyChain的doProxyChain方法,来执行增强和被代理的方法。
3,AopHelper取得要被代理类和代理类,把代理类加到要被代理的类上。然后保存到BeanHelper里。
Transaction
1,事务也是一种AOP,这个AOP应该放到AOP链的最后一个,也就说事务的AOP被调用完后,就应该调用“目标方法”了。因为事务只保证“目标方法”里的事务完整性,不需要保证目标方法被调用时,其它的AOP的事务和目标方法事务合起来的完整性。
Security:
1,ServletContextListener,ServletContainerInitializer:
以上 ServletContext 新增的方法要么是在 ServletContextListener 的 contexInitialized 方法中调用,要么是在 ServletContainerInitializer 的 onStartup() 方法中调用。
ServletContainerInitializer 也是 Servlet 3.0 新增的一个接口,容器在启动时使用 JAR 服务 API(JAR Service API) 来发现 ServletContainerInitializer 的实现类,并且容器将 WEB-INF/lib 目录下 JAR 包中的类都交给该类的 onStartup() 方法处理,我们通常需要在该实现类上使用 @HandlesTypes 注解来指定希望被处理的类,过滤掉不希望给 onStartup() 处理的类。
2,Ehcache:最流行的纯Java开源缓存框架
3,
Soap和Rest服务:
1,CXF可以发布Rest服务,Spring自己也可以发布Rest服务,那他们有什么区别呢?
参考:javax.ws.rs 创建 restful 服务 与使用 spring框架创建的 restful有啥区别呢?
2,有的文章上写CXF结合Spring发布Rest服务,为什么CXF要和Spring结合发布Rest服务呢?这样的做法,就是要用到“CXF写程序的可移植性“(把程序拿到其它符合jax-rs标准的框架中使用),并且用到Spring的“事务”等特点。
Spring和CXF结合的文章可以参考:CXF学习笔记三(发布restFul)
3,CXF的一些架构体系。
4,CXF的jax-ws服务的几种发布方法,有静态代理,动态代理,还有Simple方式的。Simple方式的有局限性,动态方式的服务名是通过“字符串+反射”的方式做的,容易出错。项目上使用的是“静态+wsdl2java”方式,感觉还不错。
5,还可以为soap服务加密,把Body内容全都给加密了。
6,如何把把发布soap服务功能,变成框架的一部分,或是一个插件。
7,通过CXF的jax-rs发布Rest服务,如何实现REST服务跨域访问(JSONP(只能跨域访问GET服务)和CORS(可以跨域访问各种服务))。
其它:
- Apache 工具类:生成hashCode等基础方法
- Apache 工具类:编码解码类
- Collections.synchronizedMap(new HashMap<>())生成同步的Map
- ThreadLocal的实现
- 要