springbean不是作为单例创建的

uoifb46i  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(211)

这是一个使用spring3的老项目,带有基于xml的bean定义,我对公司/项目还不熟悉。
我只是在寻找指针,不一定期望你能为我找到问题的根源。
基本上,spring正在创建同一类/bean的多个示例。从Spring的定义 scope=singleton ,意思是每个ioc容器有一个单例,而不是经典的gof定义中的单例https://docs.spring.io/spring-framework/docs/3.0.0.rc1/reference/html/ch03s05.html
作为一种解决方法,我的同事会显式地向每个bean定义添加一个init方法(实际上需要是一个单例,比如一个包含缓存的类)

<bean id="myServiceBean" class="com.supercompany.MyCache" init-method="init"/>

而在 init 方法,实现了一个单例模式,因此有效地重用了相同的示例。
只有一个 contextConfiguration 绑定到 applicationContext.xml ,我尝试搜索“classloader”和“applicationcontext”项目,希望找到多个实现,但没有结果。

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

还有什么其他的指示吗?
编辑:
我的mycache有点误导。经过更多的调查,“普通”类被正确地示例化为单例。是我的服务类没有正确创建。我正在使用 javax.ws.rs 注解

@Path("/share")
public class ShareService {
...
}

编辑2:经过更多的调查,这是一个 Javax-ws-rs / JAX-RS “问题”,根据设计,它是每个请求的一个新示例。然而,即使添加javax-ws-rs Singleton 还是不行。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题