d599c8fb5d73a53a317b28a9db382a86d75e9364
[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 context files: " + SpringContextLocator.SPRING_CONFIG_CONTEXT);
28
29                 factoryFiles = new String[] { SPRING_CONFIG_CONTEXT };
30
31                 SpringContextLocator.context = new ClassPathXmlApplicationContext(factoryFiles);
32
33                 System.out.println("The context has been loaded successfully!! ");
34         }
35
36         /**
37          * Singleton pattern not thread safety. To use SingletoHolder pattern as the best approximation 
38          * otherwise to use an Enum class (see Effective Java Second Edition and ) if we need serialization.
39          */
40         public static SpringContextLocator getInstance() {
41                 if (SpringContextLocator.instance == null) {
42                         SpringContextLocator.instance = new SpringContextLocator();
43                 }
44                 return SpringContextLocator.instance;
45         }
46
47         /**
48          * Return bean from application context.
49          */
50         public Object getBean(final String name) {
51                 return SpringContextLocator.context.getBean(name);
52         }
53 }