Berrigan
Berrigan

Reputation: 438

Using spring applicationContext in many classes

is it possible to use spring applicationcontext in many classes?


For example 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>

The main problem is that room list should be initialized using spring. Unfortunately I cannot pass it through constructor.

Upvotes: 1

Views: 219

Answers (1)

Brian Agnew
Brian Agnew

Reputation: 272247

You can use multiple contexts, but I wouldn't advise it if you want objects to inter-operate across those. You'll end up with multiple singletons (confusingly)

If you can't find a way to perform your injection via Spring, I would perhaps give your application context global static scope, and set the rooms list via a ctx.getBean("rooms") invocation. Having a global static application context isn't ideal, but perhaps a practical solution in the absence of any hooks for injection.

Upvotes: 1

Related Questions