是否可以在许多类中使用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初始化房间列表。不幸的是我无法通过构造函数传递它。
答案 0 :(得分:1)
您可以使用多个上下文,但如果您希望对象跨越这些上下文,我就不会建议它。你最终会遇到多个单身人士(令人困惑)
如果你找不到通过Spring执行注入的方法,我可能会给你的应用程序上下文全局静态范围,并通过ctx.getBean("rooms")
调用设置房间列表。拥有全局静态应用程序上下文并不理想,但在没有任何注入钩子的情况下可能是一个实用的解决方案。