是否可以在许多类中使用 spring applicationcontext?
<小时/>例如 Main.java
public class Main {
public static void main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
Server s = (Server) ctx.getBean("server");
try{
s.start();
}catch(Exception ek){ ek.printStackTrace();}
}
}
<小时/>
EndPoint.java
@ServerEndpoint(value = "/server")
public class EndPoint{
List<Room> rooms = ..............
@OnMessage
public String onMessage(String message, Session s){
return message;
}
}
<小时/>
spring.xml
<bean id="server" class="org.glassfish.tyrus.server.Server">
<constructor-arg index="0" value="localhost"/>
<constructor-arg index="1" value="8025"/>
<constructor-arg index="2" value="/margonem"/>
<constructor-arg index="3"><null /></constructor-arg>
<constructor-arg index="4" value="com.berrigan.margonemserver.EndPoint"></constructor-arg>
</bean>
主要问题是房间列表应该使用 spring 初始化。不幸的是我无法通过构造函数传递它。
最佳答案
您可以使用多个上下文,但如果您希望对象在这些上下文之间进行互操作,我不建议您这样做。你最终会得到多个单例(令人困惑)
如果您找不到通过 Spring 执行注入(inject)的方法,我可能会给您的应用程序上下文全局静态范围,并通过 ctx.getBean("rooms") 设置房间列表
调用。拥有全局静态应用程序上下文并不理想,但在没有任何注入(inject)钩子(Hook)的情况下也许是一个实用的解决方案。
关于java - 在许多类中使用 spring applicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31250942/