public interface CachedLoadService { Map loadHomeData(); } public class CachedUtils { private static Date lastSearchTime=null; private static Map mapMediaList=null; static Object lock = new Object(); public static Map getMediaList() { synchronized (lock) { CachedLoadService cachedLoadService=(CachedLoadService) SpringContextUtil.getBean("cachedLoadService"); //或者其它业务类 try { if(lastSearchTime==null) { mapMediaList=cachedLoadService.loadHomeData(); lastSearchTime=new Date(); } else { if(mapMediaList==null) { mapMediaList=cachedLoadService.loadHomeData(); lastSearchTime=new Date(); } else { mapMediaList=cachedLoadService.loadHomeData(); lastSearchTime=new Date(); } } return mapMediaList; } catch (Exception e) { return mapMediaList; } } }
}
cachedLoadService.loadHomeData() 就是一个 final static Map
実際のところ、ビジネス メソッドごとにインターフェイスを用意するのが面倒な複雑なビジネスでない限り、すべてのサービスでインターフェイスを記述する必要はないと思います。
あなたは依存関係の問題を解決したのではなく、単にオブジェクトの作成の問題を解決しただけです。
依存関係は最も複雑です。**1. メモリに関しては、Spring は動的プロキシを通じて必要なものをロードできます。静的メソッドとは異なり、プログラムのコンパイル時にロードされます。
2. Spring の IOC を通じて、プログラムのライフサイクル全体を通じてオブジェクト (シングルトン モードなど) を常に維持する必要があるかどうか、または beanFactory を使用してさまざまな Java Bean を生成する必要があるかどうかを制御できます。 **