0

私のアプリケーション プロパティの多くは、リポジトリ経由で注入したいデータベースによって提供されます。これは春でできるのだろうか。誰かが解決策を提案できれば幸いです。私が考えているコードは、これに似ています:

    @Component
    public class ExampleService implements Service {

        private PlatformSetting setting1;

        @Required
        @Qualifier("setting1")
        public void setSetting1(PlatformSetting setting1) {
            this.setting1 = setting1;
        }

        public String getMessage() {
            return "Hello world!" + setting1.getValue();    
        }

    }


    @Repository
    public class PlatformSettingRepository {


        private HashMap<String, PlatformSetting> settings;
        {
            settings = new HashMap<String, PlatformSetting>();
            settings.put("setting1", new PlatformSetting("bla1"));
            settings.put("setting2", new PlatformSetting("bla2"));

        }

        @Bean
        public PlatformSetting findSetting(@Qualifier String qual) {
            return settings.get(qual);
        }
    }

PlatformSettingRepositoy をサービスに挿入して検索できることはわかっています。しかし、呼び出し時にこれらのルックアップを行いたくありません。Spring コンテナーが起動時にそれらを実行するようにします。

4

3 に答える 3

3

CommonsConfigurationFactory と組み合わせた PropertyPlaceholderConfigurer があなたの答えです。この投稿をご覧ください。

于 2013-05-16T04:45:29.820 に答える
1

Spring 式言語を使用します。

ステップ 1: @Bean を使用して設定ハッシュマップを公開します。たとえば、id ="appSettings" とします。

ステップ 2: 設定 1 を挿入する場所で、アノテーションを使用します。

@Value("#{ appSettings['setting1'] }")
private PlatformSetting setting1;

注:これはプレーンな値で機能し、あなたのケースでも機能するはずです。私はそれを試していませんが。これが機能しない場合は、Bean を初期化する Java 構成方法を既に使用しているため、メソッドで式パーサーを直接使用できます。

于 2013-05-19T14:58:44.090 に答える