我有一个 java 类,称之为“Job”,它实现了我使用蓝图导出为服务的接口。尽管该类在蓝图 xml 文件中定义为具有 scope="prototype" 的 bean,并且服务引用了该 bean,但我可以从 Job 的实例方法中的 System.out.println(this) 语句中看到,每次我从调用程序包访问服务时,它都会重用它在启动包时创建的类 Job 的相同实例;我的调用程序包查找服务引用,调用 context.getService(serviceReferences[0]) 以获取对 Job 服务的引用,然后调用该服务上的方法(例如 Job.run())。
我认为每次我从调用程序包调用 getService 时,创建服务 bean def 原型的范围会给我一个新的 Job 实例,但我的实验表明它仍在使用相同的对象实例。
那么如何调用服务并让它每次都创建一个新的 Job 实例,而不是重用同一个对象?
我还需要将另一个服务引用作为属性注入到 bean Job 中,因为 bean 接口没有 set 方法来执行此操作。因此,必须将每个新实例创建为 bean Job,以便它可以使用 setX() 方法注入属性。