@Repository注解会导致spring boot生成一个动态代理

用了一个@Repository注解,本意是避免了idea开发工具提示接口 unused,但是导致了一个后果,spring boot自动把该接口包装成了动态代理类,里面才是mybatis生成的动态代理类。
项目框架内用到了hdl = Proxy.getInvocationHandler(this.baseMapper); 来获取真实的DAO层接口,导致了获取不到,取到的是Jdk的动态代理类

下面是basemapper的代理实现类。
[email protected],
它的InvocationHandler是JdkDynamicAopProxy类,但是调用getinvocationHandler方法会返回null,因为取不到System.getSecurityManager()
![](https://s1.51cto.com/images/blog/201904/04/b164e60c24a1c7ace65601ba8e25ae5e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

图片中红框处返回值为null,原因未知。

原文地址:https://blog.51cto.com/luhaiyou/2374322

时间: 2024-07-31 09:52:31

@Repository注解会导致spring boot生成一个动态代理的相关文章

类的加载机制和反射——五、使用反射生成JDK动态代理

使用反射生成JDK动态代理 1.使用Proxy和InvocationHandler创建动态代理 (1)Proxy提供了用于创建动态代理类和动态代理对象的静态方法,他也是所有动态代理类的父类. (2)如果在程序中为一个或多个接口动态的生成实现类,就可以使用Proxy来创建动态代理类,如果需要为一个或多个接口动态的创建实例,也可以使用Proxy来创建动态代理实例. (3)Proxy提供了两个方法来创建动态代理类和动态实例: 1)static Class<?> getProxyClass(Class

Spring Boot . 2 -- 用Spring Boot 创建一个Java Web 应用

通过 start.spring.io 创建工程 通过 IDEA 创建工程 ??<Spring Boot In Action> 中的例子 建立一个展示阅读列表的应用.不同的用户将读过的书的数据登记进来,每次进到页面都能看到相应的读书记录. 1. 首先登录页面 start.spring.io. 页面大概长这个样子: 点击空框内的链接,会展示更全面的参数选择.[参数填好后],选择 "Generate Project" 就可以将一个完整的Spring Boot 工程下载下来了. 工

spring cloud教程之使用spring boot创建一个应用

<7天学会spring cloud>第一天,熟悉spring boot,并使用spring boot创建一个应用. Spring Boot是Spring团队推出的新框架,它所使用的核心技术还是Spring框架,主要是Spring 4.x,所以如果熟悉spring 4的人,能够更快的接受和学会这个框架.Spring boot可以看做是在spring框架基础上再包了一层,这一层包含方便开发者进行配置管理和快速开发的模块,以及提供了一些开箱即用的工具,比如监控等. Spring Boot官方文档有中

Spring Boot实现一个监听用户请求的拦截器

项目中需要监听用户具体的请求操作,便通过一个拦截器来监听,并继续相应的日志记录 项目构建与Spring Boot,Spring Boot实现一个拦截器很容易. Spring Boot的核心启动类继承WebMvcConfigurerAdapter // 增加拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new RequestLog()); } //这

安装使用Spring boot 写一个hello1

一.创建springboot 项目 二.进行代编写 1.连接数据库:application.properties里配置 spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/huoguo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone

Java反射—运用反射生成jdk动态代理

1.  核心类&接口 在Java的java.lang.reflect包下提供一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成jdk动态代理类或动态代理对象. Proxy是所有动态代理类的父类,它提供了两个静态方法来创建动态代理类和动态代理对象,如下: ?  static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces) ?  static Objec

Spring AOP中的动态代理

0  前言 1  动态代理 1.1 JDK动态代理 1.2 CGLIB动态代理 1.2.1 CGLIB的代理用法 1.2.2 CGLIB的过滤功能 2  Spring AOP中的动态代理机制 2.1 JdkDynamicAopProxy 2.2 CglibAopProxy 3 总结 0  前言 前一个季度旅游TDC的Thames服务有几次宕机,根据组内原因认真查找发现是数据库事务造成的,后来把服务中的事务配置全部去掉,服务恢复正常.根据这次教训,虽然现在还是很难确定是哪一个方面的真正原因,但是激

Spring中的JDK动态代理

Spring中的JDK动态代理 在JDK1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在动态代理是实现AOP的绝好底层技术. JDK的动态代理主要涉及Java.lang.reflect包中的两个类:Proxy和InvocationHandler.其中InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编织在一起.而Proxy为Invo

spring(二)-反射、动态代理

主要是对上一篇文章中涉及到的点做补充,欢迎指正! 1.  java反射知识-Spring IOC 依赖注入 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类:在运行时构造任意一个类的对象:在运行时判断任意一个类所具有的成员变量和方法:在运行时调用任意一个对象的方法:生成动态代理. Java中有个继承至Object类的Class类,其对象用于表达Java程序运行时的所有类和接口,也用来表达enum.array.primitive Java types(boolean, byt