Reputation: 438
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
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