proxyMode ScopedProxyMode.TARGET_CLASS 与 ScopedProxyMode.INTERFACE

2023-11-22

正如其他 SO 答案所建议的,根据您的需要使用代理模式类型,我仍然很困惑;

@Configuration
@ComponentScan
public class Application 
{
    public static void main( String[] args )
    {
        ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);

        PrototypeBeanFactory factoryBean = context.getBean(PrototypeBeanFactory.class);
        System.out.println("Let's start");
        SomeInterface b1 = factoryBean.getPrototypeBeanInstance();
        SomeInterface b2 = factoryBean.getPrototypeBeanInstance();

        System.out.println(b1.hashCode());
        System.out.println(b2.hashCode());

        b1.sayHello();
        b2.sayHello();

        b1.sayHello();
        b2.sayHello();
    }
}

@Component
public class PrototypeBeanFactory {
    @Lookup
    public PrototypeBean getPrototypeBeanInstance(){
        System.out.println("It'll be ignored");
        return null;
    }
}

@Component
@Scope(value="prototype", proxyMode = ScopedProxyMode.INTERFACES)
public class PrototypeBean {
    public PrototypeBean() {
        System.out.println("I am created");
    }

    public void sayHello() {
        System.out.println("Hello from " + this.hashCode());
    }

}

Output

Let's start
I am created
I am created
1849201180
1691875296
Hello from 1849201180
Hello from 1691875296
Hello from 1849201180
Hello from 1691875296

现在,如果我将代理模式更改为 TARGET_CLASS

Output

Let's start
-721204056
-721204056
I am created
Hello from 172032696
I am created
Hello from 299644693
I am created
Hello from 1771243284
I am created
Hello from 2052256418

为什么在基于类的代理的情况下,它在每次方法调用时创建不同的对象?


@Component
@Scope(value="prototype", proxyMode = ScopedProxyMode.INTERFACES)
public class PrototypeBean { ... }

在您的情况下,这将导致每次调用一个 beangetBean豆作为你的PrototypeBean没有实现接口,因此无法创建作用域代理。在您的情况下,您调用查找方法两次,因此您将获得 2 个实例。这实际上是一个人的正常行为prototype作用域 bean。

Component
@Scope(value="prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class PrototypeBean { ... }

这将导致代理的创建。该代理创建一次,每次调用都会返回getBean。一旦您在代理上调用方法,它就会根据范围创建一个新方法或重用现有方法。正如您将范围指定为prototype每个方法调用都会产生一个新对象。

Note:如果您的类将实现一个公开适当方法的接口,则行为不会有任何差异proxyMode = ScopedProxyMode.INTERFACES and proxyMode = ScopedProxyMode.TARGET_CLASS在这两种情况下都会创建一个作用域代理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

proxyMode ScopedProxyMode.TARGET_CLASS 与 ScopedProxyMode.INTERFACE 的相关文章

  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 我需要什么库才能在 Java 中访问这个 com.sun.image.codec.jpeg?

    我正在用java创建一个图像水印程序 并导入了以下内容 import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JPEGEncodeParam im
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 考虑在配置中定义“org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder”类型的 bean

    我正在尝试将 jwt 令牌连接到我的项目 但在工作过程中遇到了一些问题 我已按照上述说明进行操作here https auth0 com blog implementing jwt authentication on spring boot
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String

随机推荐

  • C++中的组合数(N选R)

    这里我尝试用C 编写一个程序来查找NCR 但我的结果有问题 这是不正确的 你能帮我找出程序中的错误吗 include
  • PostgreSQL:将非常大的数字的十六进制字符串转换为NUMERIC

    我正在尝试转换非常大的数字的十六进制字符串 到数字列 CREATE OR REPLACE FUNCTION hex to int hexval varchar RETURNS NUMERIC AS DECLARE result NUMERI
  • 使用 nls 在 R 中进行曲线拟合

    我正在尝试在以下数据 尾部 上拟合一条曲线 1 1 1 1 1 1 1 2 1 2 2 3 2 1 1 4 3 2 11 6 2 16 7 17 36 25 27 39 41 33 42 66 92 138 189 249 665 224
  • 检查会员/财产类型

    假设我有任何课程 比如这个 class SomeClass val aThing String val otherThing Double 然后我用反射来分析这个类的字段 for field in SomeClass declaredMem
  • 如何在 Node.JS 中限制(或排队)对外部进程的调用?

    Scenario 我有一个 Node JS 服务 使用编写ExpressJS 通过 DnD 接受图像上传 example 上传图像后 我对其执行一些操作 从中提取 EXIF 数据 调整大小 这些电话正在通过节点 imagemagick目前的
  • Chrome DevTools 扩展:如何从内容脚本中的元素面板中获取选定的元素?

    我已经完成了我的研究并为此苦苦挣扎了一段时间 但我需要你的帮助 我正在构建一个 Chrome DevTools 扩展 它应该传递 元素 面板中当前选定的元素作为参考到内容脚本中定义的 JS 对象 重要的是我要通过参考到选定的元素 或者从内容
  • 获取 64 位整数中的位位置数组

    好吧 这可能听起来有点复杂 但这就是我想要做的 以10101010101 并返回 0 2 4 6 8 10 包含所有已设置位的位置的数组 这是我的代码 UINT DQBitboard firstBit U64 bitboard static
  • jQuery:在模糊()事件之前触发单击()

    我有一个输入字段 我尝试在其中提出自动完成建议 代码看起来像
  • 如何在 Chrome 的弹出窗口上切换设备模式?

    我有一个网络应用程序 其中的聊天功能会在新的弹出窗口中打开 通常 在 Chrome 中我可以按 F12 并单击智能手机的图标来切换它 但在弹出的窗口中并没有出现该图标 这对我来说很重要 因为我需要限制弹出窗口的连接以模拟用户从聊天中断开连接
  • 如何在 GCC 中指定枚举大小?

    我想为枚举指定 64 位的枚举大小 这怎么可能通过 GCC 实现呢 该代码不需要 可移植 因为我只对使代码在 x86 32 和 x86 64 Linux 的 GCC 编译上工作感兴趣 这意味着任何可以提供我想要的功能的黑客都可以 只要它适用
  • 处理urllib2的超时? - Python

    我在 urllib2 的 urlopen 中使用超时参数 urllib2 urlopen http www example org timeout 1 我如何告诉Python 如果超时到期 应该引发自定义错误 有任何想法吗 您想要使用的情况
  • 为什么我的区域特定 Web API 可以从所有其他区域访问?

    我目前正在开发一个 ASP NET MVC 4 Web 应用程序项目 该项目必须遵守以下设计决策 主 MVC 应用程序位于解决方案的根目录中 所有管理员功能都位于单独的区域中 每个外部方 例如供应商 都有自己的区域 每个区域 包括根部 都构
  • 什么是 ruby​​ on Rails?

    我是一名前端开发人员 HTML CSS JS 和 jQuery 我了解一点 PHP 我正在尝试了解 Ruby Ruby on Rails 是什么 On http rubyonrails org 它说 Ruby on Rails 是一个开源
  • C++11 字符串开头的大小写不敏感比较(unicode)

    我必须检查特定字符串是否以另一个字符串开头 字符串使用 utf8 编码 比较应不区分大小写 我知道这与那个主题非常相似C 中不区分大小写的字符串比较但我不想使用 boost 库 我更喜欢便携式解决方案 如果 几乎 不可能 我更喜欢面向 Li
  • Angularjs 获取巨大 json 文件的请求

    我需要向用户显示数据库中的一些数据 数据位于 json 文件中 并且大小相当大 json 文件的大小大约在 15MB 左右 我创建了一个服务并使用 Promise api 发出成功的请求并加载数据并通过在 div 上执行 ng repeat
  • SFINAE 与以下 has_member 函数一起无法正常工作是什么?

    我正在尝试以下示例沃尔特 布朗 Walter Brown 的 TMP 演讲我正在努力得到他的has member实施工作 然而 实现似乎错误地返回 true 这让我相信 SFINAE 有一些我不理解的细节 include
  • 在 MATLAB 中使用 imshow 方法显示图像标题

    如何在 MATLAB 图形中显示图像标题 我有以下代码 I imread images pap png subplot 1 2 1 imshow I here I want to show labels Use the title命令 它的
  • 用于开发新的Windows Azure管理门户的框架?

    有谁知道微软使用什么框架在Windows Azure上开发类似Metro的Web管理门户 如果是这样 开发者可以使用吗 I 提出了同样的问题并因此受到很多仇恨 获胜的答案是地铁用户界面包 它完成了 Azure 中的许多工作 但您必须自己实现
  • 如何在 java 中使 JTable 可编辑

    我在 java 中使用 JTable 但它不允许我编辑单元格 private final TableModel dataModel new AbstractTableModel public int getColumnCount retur
  • proxyMode ScopedProxyMode.TARGET_CLASS 与 ScopedProxyMode.INTERFACE

    正如其他 SO 答案所建议的 根据您的需要使用代理模式类型 我仍然很困惑 Configuration ComponentScan public class Application public static void main String