小小商城系统 - SSM版 练手 JavaWEB 项目,本版本为SSM版。本项目实现了通用 Mapper,免写 SQL,全自动处理关联查询。通过合理配置 MyBatis Generator 和自定义插件,灵活隔离手写代码和自动生成代码。实现了 BaseService 类对 Service 层进行抽象。通过拦截器实现了方法级粒度的鉴权,通过AOP实现了参数校验。 演示: 可自行注册账号,或使用后台查看权限账号 demo 密码 demo (后台入口登陆后显示) 兄弟项目: 本项目的亮点: 功能齐全,页面丰富,实现了小商城的大部分功能 前端仿天猫2017页面,基于原生 CSS(前台)、Bootstrap(后台)、Jquery、Bootstrap Js 构建 本项目为 Maven 项目,后端使用 Spring 4 + SpringMVC 4 + Mybatis 3.4 + aspectj 1.8
2023-03-05 18:31:16 1.12MB java spring annotations aop
1
跟着本课程Demo完整的动手写一次,会发现你已经可以直接利用Spring Boot上手中小型web项目了。 Spring Boot框架是现在比较热门的微服务框架,很多软件公司都在使用,本课程涵盖Spring Boot和Bootstrap较为多面的知识点,针对Spring Boot开发web项目中每个阶段的关键内容和痛点,一步步进行条理清晰的讲解,学员在听课过程中建立起自己较为完备的前端、后端知识体系,具备较好的项目开展能力和自信。 课程特点是不炫技、条理清晰、生动浅显、化繁为简,每个章节都会围绕Spring Boot、Bootstrap的知识点“是什么、有什么用、怎么用”展开,并根据精心准备的简洁清晰的示例进行讲解。   学完该套课程后,可以很快上手Spring Boot实战开发,一个人就能完成一个基于Spring Boot+Bootstrap的完整WEB项目!
1
纯手工打造Emit实现AOP private static void OverrideMethods(TypeBuilder tb, MethodInfo method) { if (!method.IsPublic|| !method.IsVirtual || IsObjectMethod(method)) return; Type[] paramTypes = GetParameterTypes(method); MethodAttributes attr = MethodAttributes.Public | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.Virtual; MethodBuilder mb = tb.DefineMethod(method.Name, attr, method.ReturnType, paramTypes); LocalBuilder result = null; ILGenerator il = mb.GetILGenerator(); bool is_void = method.ReturnType != typeof(void); if (is_void == false) result = il.DeclareLocal(method.ReturnType); object[] attrs = method.GetCustomAttributes(typeof(AspectAttribute), false); if (attrs != null) { //初始化所有当前方法用到的参数object[] CreateLocalParameterArr(il, paramTypes); //初始化AspectContext Type ctxType = typeof(AspectContext); ConstructorInfo info = ctxType.GetConstructor(Type.EmptyTypes); var ctx = il.DeclareLocal(ctxType); il.Emit(OpCodes.Newobj, info); il.Emit(OpCodes.Stloc, ctx); //给AspectContext的参数值属性ParameterArgs赋值 var propMethod = ctxType.GetMethod("set_ParameterArgs"); il.Emit(OpCodes.Ldloc, ctx); il.Emit(OpCodes.Ldloc_0); il.Emit(OpCodes.Call, propMethod); int m = attrs.Length; LocalBuilder[] lbs = new LocalBuilder[m]; MethodInfo[] endInvokeMethods = new MethodInfo[m]; //初始化标记的横切对象,并调用横切对象的BeforeInvoke方法 for (int i = 0; i < m; i++) { var tmpType = attrs[i].GetType(); var aspect = il.DeclareLocal(tmpType); ConstructorInfo tmpInfo = tmpType.GetConstructor(Type.EmptyTypes); il.Emit(OpCodes.Newobj, tmpInfo); il.Emit(OpCodes.Stloc, aspect); var before_invoke_method = tmpType.GetMethod("BeforeInvoke"); endInvokeMethods[i] = tmpType.GetMethod("AfterInvoke"); il.Emit(OpCodes.Ldloc, aspect); il.Emit(OpCodes.Ldloc, ctx); il.Emit(OpCodes.Callvirt, before_invoke_method); il.Emit(OpCodes.Nop); lbs[i] = aspect; } //类对象,参数值依次入栈 for (int i = 0; i <= paramTypes.Length; i++) il.Emit(OpCodes.Ldarg, i); //调用基类的方法 il.Emit(OpCodes.Call, method); //如果有返回值,保存返回值到局部变量 if (is_void == false) il.Emit(OpCodes.Stloc, result); //调用横切对象的AfterInvoke方法 for (int i = 0; i < m; i++) { il.Emit(OpCodes.Ldloc, lbs[i]); il.Emit(OpCodes.Ldloc, ctx); il.Emit(OpCodes.Callvirt, endInvokeMethods[i]); il.Emit(OpCodes.Nop); } //如果有返回值,则把返回值压栈 if (is_void == false) il.Emit(OpCodes.Ldloc, result); //返回 il.Emit(OpCodes.Ret); } }
2023-02-21 00:41:39 33KB C# Emit AOP
1
千行代码实现代理式AOP+属性的自动装配
2023-02-21 00:21:54 137KB emit aop
1
说明 看完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");
2023-02-17 23:56:16 24KB 系统开源
1
XAOP 一个轻量级的AOP(Android)应用框架。囊括了最实用的AOP应用。 关于我 特点 支持快速点击切片@SingleClick,支持设置快速点击的时间间隔。 支持动态申请权限切片@Permission,支持自定义响应动作。 支持主线程切片@MainThread。 支持IO线程切片@IOThread,支持多种线程池类型。 支持日志打印切片@DebugLog,支持自定义日志记录方式。 支持内存缓存切片@MemoryCache,支持设置缓存大小。 支持磁盘缓存切片@DiskCache,支持自定义磁盘缓存,缓存有效时间等。 支持自动捕获异常的拦截切片@Safe,支持设置自定义异常处理者。 支持自定义拦截切片@Intercept,支持自定义切片拦截。 兼容Kotlin语法。 1、演示(请star支持) 2、如何使用 目前支持主流开发工具AndroidStudio的使用,直接配置build.gradle,增加依赖即可. 2.1、Android Studio导入方法,添加Gradle依赖 1.先在项目根目录的 build.gra
2022-12-21 19:04:29 604KB Android代码
1
Spring注解驱动开发第33讲——AOP原理总结
2022-11-17 20:49:56 87KB Spring注解驱动开发第33讲
1
spring官方下载包之外的必备补充依赖包,包括com.springsource.net.sf.cglib-2.2.0.jar, com.springsource.org.aopalliance-1.0.0.jar, com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar, commons-logging-1.1.3.jar
2022-11-16 10:49:38 1.79MB spring AOP 补充jar包
1
spring ioc+aop.zip
2022-11-02 21:13:17 4.82MB spring
1
自主实现的简易Spring框架,通过注解实现IoC容器和AOP
2022-10-30 21:11:21 12KB Spring IoC AOP 框架
1