Comment éviter à l'aide de ApplicationContext.getBean() lors de la mise en œuvre de Printemps du CIO

Je suis juste de commencer avec le Printemps CIO concept. Je vois souvent la plupart des exemples trouvés dans l'internet d'utiliser le code pour obtenir l'objet.

ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Hello hello = (Hello) appContext.getBean("hello"); 

Comme une référence à partir de ces questions Un et Deux dans le stackoverflow. J'en ai déduit qu'il n'est pas nécessaire d'utiliser appContext.getBean("bonjour") dans le code, qui est considéré comme de la mauvaise pratique. Aussi, pas recommandé plus. Corrigez-moi ici, Si mon inférence est faux.

Garder en vue, j'ai fait des changements dans mon projet en conséquence.
Voici mon applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="utilClassRef" class="org.hd.derbyops.DUtils" lazy-init="false" />
<bean id="appContext" class="org.hd.derbyops.ContextProvider" lazy-init="false">
   <property name="utils" ref="utilClassRef" />
</bean>
</beans>

Mon contextProvider Code de la Classe

public class ContextProvider implements ApplicationContextAware {

    private static ApplicationContext ctx;

    /**
     * Objects as properties
     */
    private static DUtils utils;

    public void setApplicationContext(ApplicationContext appContext)
            throws BeansException {
        ctx = appContext;

    }

    public static ApplicationContext getApplicationContext() {
        return ctx;
    }

    public static DUtils getUtils() {
        return utils;
    }

    public void setUtils(DUtils dUtilsRef) {
        utils = dUtilsRef;
    }

}

Par exemple, considérons une classe qui dépend de org.hd.derbyops.DUtils.
Je suis en utilisant la ligne de code suivante

ContextProvider.getUtils();

afinde pour obtenir DUtils Objet dans la classe A, ainsi, éviter l'utilisation de ApplicationContext.getBean() partout dans mon code.

Assumer, si j'ai 10 classes et les élèves de ma classe A est dépendante sur chacun d'entre eux, dont les objets à créer et accéder sans l'aide de ApplicationContext.getBean(). Dans ce cas également, comme l'a fait ci-dessus, j'ai une pensée de la création de propriétés de ContextProvider classe, suivi par setter et getter de la propriété, où en get<PropertyName> est statique. Donc, je peux l'utiliser partout où je suis dans le besoin d'un objet, comme ce

ContextProvider.get<PropertyName>;

Voici ma brève question.
Tout d'abord, c'Est mon approche de droit? Si c'est à droite, le chargement de toutes les fèves à la start-up, ne serait-il pas un rendement tueur? Comment voudriez-vous faire cela dans vos applications sans appel getBean au moins plus d'une fois?

Si vous étiez à la conception d'une application web & vous avez été de mettre en œuvre le Printemps du CIO, sans l'aide de ApplicationContext.getBean() dans tout le code. Comment voudriez-vous faire cela?

Remarque: avec référence à d'autres questions tagged ci-dessus

Appel ApplicationContext.getBean() n'est pas d'Inversion de Contrôle!

Êtes-vous à l'aide de Spring MVC ou d'essayer de l'utilisation de base de servlets?
Je ne suis pas à l'aide de Spring MVC, je l'utilise juste pour le CIO
En général, quelqu'un est allez avoir besoin pour obtenir un de la fève de ApplicationContext. Idéalement, il ne doit être appelé qu'une seule fois, et il serait par le bootstrap de l'objet...

OriginalL'auteur srk | 2013-02-27