春天aopframework实现
- 包 cn.itcast.day3.aopframework;
- 进口 java.io.IOException的;
- 进口 的java.io.InputStream;
- 进口 java.util.Properties;
- 进口 cn.itcast.day3.Advice;
- 公共 类 的BeanFactory {
- 属性道具= 新 特性();
- 公共 Bean工厂(IPS的InputStream){
- 尝试 {
- props.load(IPS);
- } 赶上 (IOException异常E){
- e.printStackTrace();
- }
- }
- 公共 对象的getBean(字符串名称){
- 弦乐的className = props.getProperty(名称);
- 对象豆= 空;
- 尝试 {
- clazz类=的Class.forName(类名);
- 豆= clazz.newInstance();
- } 赶上 (例外五){
- e.printStackTrace();
- }
- 如果(豆 的instanceof 的ProxyFactoryBean){
- 对象代理= 空;
- ProxyFactoryBean中的ProxyFactoryBean =(ProxyFactoryBean里)豆;
- 尝试 {
- 意见建议=(咨询)的Class.forName(props.getProperty(姓名+ “.advice” ))的newInstance()。
- 对象目标=的Class.forName(props.getProperty(名称+ “的.target” ))的newInstance()。
- proxyFactoryBean.setAdvice(咨询);
- proxyFactoryBean.setTarget(目标);
- 代理= proxyFactoryBean.getProxy();
- } 赶上 (例外五){
- e.printStackTrace();
- }
- 返回 代理;
- }
- 返回 豆;
- }
- }
- 包 cn.itcast.day3.aopframework;
- 进口 的java.io.InputStream;
- 进口 java.util.Collection的;
- 公共 类 AopFrameworkTest {
- / **
- * @参数的args
- * /
- 公共 静态 无效 的主要(字串[]
args) 抛出 异常{ - // TODO自动生成方法存根
- InputStream的IPS = AopFrameworkTest。类.getResourceAsStream(“config.properties” );
- 对象豆= 新 的BeanFactory(IPS).getBean(“XXX” );
- 的System.out.println(bean.getClass()的getName());
- ((集合)豆).clear();
- }
- }
- 包 cn.itcast.day3.aopframework;
- 进口 java.lang.reflect.InvocationHandler;
- 进口 java.lang.reflect.Method中;
- 进口 java.lang.reflect.Proxy;
- 进口 cn.itcast.day3.Advice;
- 公共 类 的ProxyFactoryBean {
- 私人 咨询建议;
- 私人 对象的目标;
- 公众 咨询getAdvice(){
- 返回 意见;
- }
- 公共 无效 setAdvice(咨询意见){
- 这.advice =意见;
- }
- 公共 对象了getTarget(){
- 返回 的目标;
- }
- 公共 无效 setTarget(目标对象){
- 这.TARGET =目标;
- }
- 公共 对象的getProxy(){
- // TODO自动生成方法存根
- 反对Proxy3服务器= Proxy.newProxyInstance(
- target.getClass()。getClassLoader(),
- / *新的Class [] {} Collection.class,* /
- target.getClass()。getInterfaces(),
- 新 的InvocationHandler(){
- 公共 对象调用(对象代理,方法的方法,对象[]参数)
- 抛出 的Throwable
- / *长BEGINTIME = System.currentTimeMillis的();
- 对象retVal的= method.invoke(目标参数);
- 长endTime的= System.currentTimeMillis的();
- 的System.out.println(method.getName()+“运行时间”+(endTime的 - BEGINTIME));
- 返回retVal的; * /
- advice.beforeMethod(法);
- 对象retVal的= method.invoke(目标参数);
- advice.afterMethod(法);
- 返回 retVal的;
- }
- }
- );
- 返回 Proxy3发出;
- }
- }
- config.properties
- #XXX =的java.util.ArrayList
- XXX = cn.itcast.day3.aopframework.ProxyFactoryBean
- xxx.advice = cn.itcast.day3.MyAdvice
- xxx.target =的java.util.ArrayList
春天aopframework实现的更多相关文章
- 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记
前言 网购已经不再是现在的时髦,而变成了我们每天的日常生活.上网已经和买买买紧密地联系在了一起,成为了我们的人生信条.而逛街一词,越来越多地变成了一种情怀.有时候我们去逛街,要么是为了打发时间,要么是 ...
- web前端的春天 or 噩梦
「 微信应用号可以做什么」 简单说,微信"小程序"可以为开发者提供基于微信的表单.导航.地图.媒体和位置等开发组件,让他们在微信的网页里构建一个 HTML 5 应用.同时微信还开放 ...
- TODO:小程序的春天你想做什么
TODO:小程序的春天你想做什么 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 初步了解小程序的特点 导航明确,来去自如 统一稳定, 视觉规范 ...
- python opencv 利用Lab空间把春天的场景改为秋天
前一段时间实现了Reinhard颜色迁移算法,感觉挺有意思的,然后在代码上随意做了一些更改,有了一些发现,把Lab通道的a通道值改为127左右,可以将绿色改为黄色,而对其他颜色的改动非常小,因此可以将 ...
- 企业SAAS的春天,将以手机应用的形式,即将到来
派尔科技吴春福 *本文是派尔为什么要投身企业移动应用的内部分享文章: *我没有仔细核查资料,仅代表个人看法,思路也是在整理过程,逻辑未必很完整,看官将就着看. 企业SAAS,概念起源是N年前,先行者也 ...
- 8年,属于 HTML 5 春天的到来悄悄!
[核心提示] 在 8 年时间中,HTML 5 为整个行业都带来了什么.标准终于确定后又会产生什么样的变革呢? 微博微信Twitter对于非常多人来说,非常有可能在微信的朋友圈里玩过「围住神经猫」,也非 ...
- 《如莲春天》Java开发框架
关于 如莲者,净洁如莲之意,希望打造一个简洁的系统框架.系统主要采用Spring相关技术,故取名:如莲春天. 如莲春天,包括一套系统界面.一个权限管理系统.一个CURD代码生成模块.一些基础模块 ...
- 春天的事务之9.3编程式事务 - 跟我学spring3
9.3编程式事务 9.3.1编程式事务概述 所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理. Spring框架提供一致的事务抽象,因此对于JDBC还是JTA事务都是采用相同 ...
- 春天JDBC事务管理
JDBC事务管理 春天提供编程式的事务管理(编程式事务管理)与声明式的事务管理(声明式事务management),为不同的事务实现提供了一致的编程模型,这节以JDBC事务为例,介绍Spring的事务管 ...
随机推荐
- Java在linux下调用C/C++生成的so文件
1.CplusUtil.java是java web工程中的一个工具类内容如下:CplusUtil.java package cn.undoner.utils; /** * Created by ${& ...
- div效果很好的遮盖层效果
[html] view plaincopyprint? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与转化
首先在编译程序时经常会遇到这种问题: 错误 1 error C2664: "CWnd::MessageBoxW": 不能将参数 1 从"const char [3]&qu ...
- jsoup详解
json相信大家都用的多,jsonp我就一直没有机会用到,但也经常看到,只知道是"用来跨域的",一直不知道具体是个什么东西.今天总算搞明白了.下面一步步来搞清楚jsonp是个什么玩 ...
- pycharm+django之小试牛刀
准备好好学习一下python,就从django开始吧,顺带了解一下网站的开发.今天在windows上安装了python,django,以及酷炫吊的IDE--pycharm,学习资料主要是<the ...
- iOS-导航头像缩放,支持点击回调
在很多App中,经常存在一种需求就是,界面上下滚动时用户的头像也会跟着滚动,而用户头像在视图向上滚动一定范围时停留并在导航栏的位置 基本用法如下:1.单纯的实现这一效果: - (LEOHeaderVi ...
- 柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布
柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布 由于JAVA和Android的平台型,所以APP很容易被反编译,这对于我们开发者来说,是一个不想要 ...
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示
正常情况下, ViewPager 一页只能显示一项数据, 但是我们常常看到网上,特别是电视机顶盒的首页经常出现中间大图显示两端也都露出一点来,这种效果怎么实现呢?先上一张效果图: 大家第一眼肯定想到了 ...
- 开源网络监控管理系统:OpenNMS
OpenNMS是一个开源的企业级基于Java/XML的分布式网络和系统监控管理平台.OpenNMS是管理网络的绝好工具,它能够显示网络中各中终端和服务器的状态和配置,为方便地管理网络提供有效的信息. ...
- NDK 与 JNI 的关系
简介 JNI是java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以调用java代码.JNI 是本地编程接口,Java和C/ ...