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