在许多类中使用spring applicationContext

时间:2015-07-06 16:25:48

标签: 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初始化房间列表。不幸的是我无法通过构造函数传递它。

1 个答案:

答案 0 :(得分:1)

可以使用多个上下文,但如果您希望对象跨越这些上下文,我就不会建议它。你最终会遇到多个单身人士(令人困惑)

如果你找不到通过Spring执行注入的方法,我可能会给你的应用程序上下文全局静态范围,并通过ctx.getBean("rooms")调用设置房间列表。拥有全局静态应用程序上下文并不理想,但在没有任何注入钩子的情况下可能是一个实用的解决方案。