java - 在许多类中使用 spring applicationContext

标签 java spring spring-mvc

是否可以在许多类中使用 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/

相关文章:

java - java-websocket的WebSocketServer使用什么草案?

java - SpringMVC : How to filter the client's IP?

java - Android 项目在 ListView 上滑动

java - 如何在JList Swing中添加检索到的数据库数据?

java - Spring IoC 的轻量级替代品——可能针对 Android 设备

Spring LDAP - 在独立 java 程序中创建 LdapTemplate - 使用 Spring LDAP 作为 CDI 资源

java - 如何获取 Mongo 标准中两个日期值之间的差异?

java - Spring Security 未加载 js 和 css。 (给出404错误)

java - 如何自动化鼠标和键盘?

java - Spring Mvc 表单处理程序中的 NoClassDefFoundError