首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何@Autowire隐藏在ProxyFactoryBean后面的bean?

在Spring框架中,@Autowire注解用于自动装配依赖关系的bean。当我们使用ProxyFactoryBean创建代理对象时,有时需要对代理对象进行依赖注入。下面是如何在ProxyFactoryBean后面隐藏@Autowire的bean的方法:

  1. 创建一个类,该类作为代理对象的工厂类,继承自ProxyFactoryBean。
  2. 在该类中,使用@Autowired注解来注入需要隐藏的bean。
  3. 重写ProxyFactoryBean的getObject方法,在该方法中,使用super.getObject()获取代理对象,并在返回之前进行依赖注入。
  4. 在配置文件中,将该类配置为bean,并使用该bean创建代理对象。

下面是一个示例代码:

代码语言:java
复制
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.aop.framework.ProxyFactoryBean;

public class HiddenAutowireProxyFactoryBean extends ProxyFactoryBean {

    @Autowired
    private YourHiddenBean hiddenBean;

    @Override
    public Object getObject() throws Exception {
        Object proxy = super.getObject();
        // 在返回代理对象之前进行依赖注入
        // 可以使用setter方法或者反射来注入依赖
        // 例如:((YourProxyClass) proxy).setHiddenBean(hiddenBean);
        return proxy;
    }
}

在配置文件中,将HiddenAutowireProxyFactoryBean配置为bean,并使用该bean创建代理对象:

代码语言:xml
复制
<bean id="hiddenAutowireProxyFactoryBean" class="com.example.HiddenAutowireProxyFactoryBean">
    <property name="target">
        <bean class="com.example.YourTargetClass" />
    </property>
</bean>

<bean id="yourProxy" factory-bean="hiddenAutowireProxyFactoryBean" factory-method="getObject" />

这样,通过HiddenAutowireProxyFactoryBean创建的代理对象就可以隐藏在ProxyFactoryBean后面的bean,并且可以进行依赖注入。请注意,上述示例中的YourHiddenBean和YourTargetClass是示意性的,你需要根据实际情况替换为你自己的类名。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 使用ProxyFactoryBean创建AOP代理

    工厂 bean 引入了中间层,让它创建不同类型的对象。...这既是一种轻微的优化,也是在不希望调用者在创建代理(通过建议的接口)操纵代理时,这些情况是有用的。默认值false,即允许更改(比如添加额外advice)。...这些名称是当前工厂中的bean名称,包括来自祖先工厂的bean名称。你不能在这里使用bean引用, 因为这样做会导致ProxyFactoryBean忽略了推荐的单例设置。...3 JDK和CGLIB代理 ProxyFactoryBean如何选择为特定目标对象(将代理)创建基于 JDK 的代理或基于 CGLIB 的代理。...ProxyFactoryBean在创建基于 JDK 或 CGLIB 的代理方面的行为在Spring的 1.2.x 版本和 2.0 版本之间发生了变化。

    31930

    使用ProxyFactoryBean创建AOP代理

    工厂 bean 引入了中间层,让它创建不同类型的对象。...这既是一种轻微的优化,也是在不希望调用者在创建代理(通过建议的接口)操纵代理时,这些情况是有用的。默认值false,即允许更改(比如添加额外advice)。...这些名称是当前工厂中的bean名称,包括来自祖先工厂的bean名称。你不能在这里使用bean引用, 因为这样做会导致ProxyFactoryBean忽略了推荐的单例设置。...3 JDK和CGLIB代理 ProxyFactoryBean如何选择为特定目标对象(将代理)创建基于 JDK 的代理或基于 CGLIB 的代理。...ProxyFactoryBean在创建基于 JDK 或 CGLIB 的代理方面的行为在Spring的 1.2.x 版本和 2.0 版本之间发生了变化。

    42910

    【Spring源码】- 10 Spring AOP核心API

    jdk动态代理方式比较熟悉,下面就来看下cglib动态代理如何实现。 Spring中提供了一个工具类:Enhancer,Spring中主要就是利用该工具类创建cglib动态代理。...这时就不能使用setCallbacks()设置Callback数组,而是使用setCallbackTypes()设置Callback对应的类型; 2、Enhancer.createClass()执行完成,...从之前分析来看,Advice也可以看出一种非常简单的切面,是对指定的类所有方法都进行切入,横切面太宽泛,灵活性不够,PointAdvisor引入了Pointcut显然比Advice更加灵活、强大。...高级API 前面介绍的类、接口等都是Spring AOP中一些底层API,使用起来不太方便,感觉功能不太强大,不论是ProxyFactory还是ProxyFactoryBean创建织入切面的代理,每次只能硬编码一个具体的...然后通过Spring AOP提供的高级API,理解了如何将IoC和AOP集成到一起实现强大功能,对Spring中AOP的整体实现思路也有了比较清晰的认识。

    25821

    面向切面编程AOP

    切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。...后置通知(After returning advice):在某连接点正常完成执行的通知:例如,一个方法没有抛出任何异常,正常返回。...除非完全了解AOP代理如何处理优化,否则不推荐用户使用这个设置。目前这个属性仅用于CGLIB代理; 对于JDK动态代理(缺省代理)无效。...顺序是很重要的,排在前面的将被优先服务。就是说列表里的第一个拦截器将能够第一个拦截调用。这里的名字是当前工厂中bean的名字,包括父工厂中bean的名字。...这里你不能使用bean的引用因为这会导致ProxyFactoryBean忽略通知的单例设置。你可以把一个拦截器的名字加上一个星号作为后缀(*)。

    65220

    深入理解Spring之源码剖析AOP(XML配置方式)

    1.3 Advisor (通知器,将 Advice 和 PointCut 结合起来) 有了对目标方法的增强接口 Advice 和 如何匹配目标方法接口 PointCut 接口,那么我们就需要用一个对象将他们结合起来...> 可以看到,我们定义了3个bean,上面两个是我们刚刚定义的,下面一个我们要好好说说,ProxyFactoryBean 是一个什么东西呢?...,就直接赋值),然后进入下面的if判断,很明显会直接跳过。...我们回到 ProxyFactoryBean 类的 getProxy 方法,当 createAopProxy 返回一个Cglib 代理的,则调用 getProxy 方法获取一个代理对象,我们看看该方法实现...总之,我们已经知道了Spring 是如何生成代理对象的,主要的通过 ProxyFactoryBean 来实现。 最后,返回代理类,执行代理类的方法。完成切面编程。 4.

    56210

    Spring | Bean自动装配详解

    个人主页:BoBooY的CSDN博客_Java领域博主 前言:上节我给大家讲解了Spring的依赖注入,这一节我们讲解Spring中Bean如何自动装配,废话不多说,直接上正文!...文章目录 Bean的自动装配 5.1、自动装配说明 5.2、测试环境搭建 5.3、 自动装配(autowire) 5.3.1、byName (按名称自动装配) 5.3.2、byType (按类型自动装配...Spring中bean有三种装配机制,分别是: 在xml中显式配置; 在java中显式配置; 式的bean发现机制和自动装配。...测试: 1、修改bean配置,增加一个属性 autowire=“byName” ...NoUniqueBeanDefinitionException 测试: 1、将user的bean配置修改一下 : autowire=“byType” 2、测试,正常输出 3、在注册一个cat 的bean

    69410
    领券