【Spring】SPRING管理対象外の対象は、SPRINGコンテナ管理対象を参照しますか?オブジェクト間の参照方法


最近のプロジェクトでは、springコンテナに渡して管理したくないオブジェクトがあり、自分のnewでインスタンス化して、自分がこのオブジェクトをよりよく維持したいと思っています.
ここではSPRING管理の対象ではない,すなわち自分がインスタンス化した対象はAで代用し,SPRING管理の対象はBで代用する.
ネットで長い間探していましたが、最終的には終わりました.ここではまずカーブを言います.
ApplicationContext context = new ClassPathXmlApplicationContext(
                "classpath*:spring/spring-*.xml");
        return (CommonService) context.getBean("commonService");
上図のようにAクラスはBクラスを引用しようとしているので、Aクラスに上記のような方法でBクラスを取得し、プロジェクトを開始すると、いったんBクラスを引用するとspringのすべてのオブジェクトが再びインスタンス化され、JVMモニタリングによりオブジェクトが爆発寸前であることが判明し、断固として放棄した.上記の方法とWEBコンテナの起動ロードは共有されず、独立していることを示している.WEBコンテナが起動してspringのすべてのオブジェクトをロードして、上の方法は引用される時またロードして、これは繰り返して、何回引用して、何回繰り返して、巨大な穴!!!
springコンテナの方法を探して、springコンテナからspringコンテナにインスタンス化されたばかりのオブジェクトを取りに行きます.これで繰り返しロードされません.インスタンス化された共有のオブジェクトを取ります.
クラス実装のBeanFactoryAwareインタフェースを定義する
public class ServiceLocator
        implements BeanFactoryAware {

    private static BeanFactory beanFactory = null;
    private static ServiceLocator serviceLocator = null;

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        ServiceLocator.beanFactory = beanFactory;
    }

    public BeanFactory getBeanFactory() {
        return beanFactory;
    }

    public static ServiceLocator getInstance() {
        if (serviceLocator == null) {
            serviceLocator = (ServiceLocator) beanFactory.getBean("serviceLocator");
        }
        return serviceLocator;
    }

    public static Object getService(String serviceName) {
        return beanFactory.getBean(serviceName);
    }

}
Aクラスでは、Bクラスを参照する場合は、上記のクラスの静的メソッドgetServiceでbeanの名前を入力します.
private CommonService getCommonService() {
        /*@SuppressWarnings("resource")
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "classpath*:spring/spring-*.xml");
        return (CommonService) context.getBean("commonService");*/
        return (CommonService) ServiceLocator.getService("commonService");
    }
上記のように、親測定に成功しました
これにより,非SPRING管理オブジェクトとSPRING管理オブジェクトが完璧に結合する.