ioc-aop:看完spring的源码后,自己手动实现一个类似Spring的IOC和AOP功能的演示,代码注释详细,项目可以直接运行-看

上传者: 42144707 | 上传时间: 2023-02-17 23:56:16 | 文件大小: 24KB | 文件类型: ZIP
说明 看完spring源码后,感触颇深。于是经过一番研究手动实现一个类似Spring的IOC和AOP功能的演示,本demo成功实现了容器的依赖注入和切面的功能,aop使用CGLIB实现。 说明 首先代码的测试运行demo见 应用程序 public static void main(String[] args) throws ClassNotFoundException { //初始化环境 init(); //模拟spring启动 Class.forName("com.mySpring.autowired.BeanFactory"); ClassesService classesService = (ClassesService) BeanFactory.getBean("classesService");

文件下载

资源详情

[{"title":"( 31 个子文件 24KB ) ioc-aop:看完spring的源码后,自己手动实现一个类似Spring的IOC和AOP功能的演示,代码注释详细,项目可以直接运行-看","children":[{"title":"ioc-aop-master","children":[{"title":"pom.xml <span style='color:#111;'> 3.77KB </span>","children":null,"spread":false},{"title":"src","children":[{"title":"test","children":[{"title":"java","children":[{"title":"com","children":[{"title":"learn","children":[{"title":"AppTest.java <span style='color:#111;'> 320B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"main","children":[{"title":"resources","children":[{"title":"scan-package.properties <span style='color:#111;'> 25B </span>","children":null,"spread":false}],"spread":true},{"title":"java","children":[{"title":"com","children":[{"title":"mySpring","children":[{"title":"aop","children":[{"title":"aspect","children":[{"title":"AfterAspect.java <span style='color:#111;'> 262B </span>","children":null,"spread":false},{"title":"BeforeAspect.java <span style='color:#111;'> 266B </span>","children":null,"spread":false},{"title":"SurroundAspect.java <span style='color:#111;'> 647B </span>","children":null,"spread":false}],"spread":true},{"title":"ProxyFactory.java <span style='color:#111;'> 1.29KB </span>","children":null,"spread":false},{"title":"annotation","children":[{"title":"Ignore.java <span style='color:#111;'> 233B </span>","children":null,"spread":false},{"title":"PointCut.java <span style='color:#111;'> 273B </span>","children":null,"spread":false}],"spread":true},{"title":"Execute.java <span style='color:#111;'> 1.53KB </span>","children":null,"spread":false},{"title":"ProxyController.java <span style='color:#111;'> 2.88KB </span>","children":null,"spread":false},{"title":"advice","children":[{"title":"Advice.java <span style='color:#111;'> 107B </span>","children":null,"spread":false},{"title":"SurroundAdvice.java <span style='color:#111;'> 167B </span>","children":null,"spread":false},{"title":"AfterAdvice.java <span style='color:#111;'> 143B </span>","children":null,"spread":false},{"title":"BeforeAdvice.java <span style='color:#111;'> 147B </span>","children":null,"spread":false}],"spread":false},{"title":"AopProxy.java <span style='color:#111;'> 1.19KB </span>","children":null,"spread":false}],"spread":true},{"title":"Application.java <span style='color:#111;'> 1.32KB </span>","children":null,"spread":false},{"title":"autowired","children":[{"title":"BeanFactory.java <span style='color:#111;'> 1.43KB </span>","children":null,"spread":false},{"title":"MyAutowired.java <span style='color:#111;'> 257B </span>","children":null,"spread":false},{"title":"ClasspathPackageScanner.java <span style='color:#111;'> 4.11KB </span>","children":null,"spread":false},{"title":"AutomaticInjection.java <span style='color:#111;'> 4.65KB </span>","children":null,"spread":false},{"title":"MyBean.java <span style='color:#111;'> 246B </span>","children":null,"spread":false},{"title":"GetClass.java <span style='color:#111;'> 875B </span>","children":null,"spread":false}],"spread":true},{"title":"service","children":[{"title":"TeacherService.java <span style='color:#111;'> 757B </span>","children":null,"spread":false},{"title":"ClassesService.java <span style='color:#111;'> 855B </span>","children":null,"spread":false},{"title":"StudentService.java <span style='color:#111;'> 695B </span>","children":null,"spread":false}],"spread":true},{"title":"utils","children":[{"title":"StringUtil.java <span style='color:#111;'> 1.21KB </span>","children":null,"spread":false},{"title":"ConstantUtil.java <span style='color:#111;'> 310B </span>","children":null,"spread":false},{"title":"PropertiesReaderUtil.java <span style='color:#111;'> 1.19KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":".gitignore <span style='color:#111;'> 361B </span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'> 4.10KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明