e5e96c24c1a1b8c7af79656b71f4e6a457197de0
[JavaForFun] /
1 package de.remote.agents.clients.app;
2
3 import org.apache.log4j.Logger;
4 import org.springframework.context.ApplicationContext;
5 import org.springframework.context.support.ClassPathXmlApplicationContext;
6
7 public class SpringContextLocator {
8     private static final Logger logger = Logger.getLogger(SpringContextLocator.class);
9
10     // Singleton Pattern
11     private static SpringContextLocator instance;
12
13     // Spring ApplicationContext
14     private static ApplicationContext context;
15
16     // Spring Context
17     private static final String SPRING_CONFIG_CONTEXT = "clients-remote-agents-spring.xml";
18
19     /**
20      * Private constructor. Singleton pattern.
21      */
22     private SpringContextLocator() {
23         logger.info("Loading context files: " + SpringContextLocator.SPRING_CONFIG_CONTEXT);
24
25         final String[] factoryFiles = new String[] { SPRING_CONFIG_CONTEXT };
26
27         context = new ClassPathXmlApplicationContext(factoryFiles);
28
29         logger.info("The context has been loaded successfully!! ");
30     }
31
32     /**
33      * Singleton pattern not thread safety. To use SingletoHolder pattern as the
34      * best approximation otherwise to use an Enum class (see Effective Java
35      * Second Edition and ) if we need serialization.
36      */
37     public static SpringContextLocator getInstance() {
38         if (instance == null) {
39             instance = new SpringContextLocator();
40         }
41         return instance;
42     }
43
44     /**
45      * Return bean from application context.
46      */
47     public Object getBean(final String name) {
48         return context.getBean(name);
49     }
50
51 }