Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring, Получение настроек из базёнки. / 10 сообщений из 10, страница 1 из 1
16.03.2015, 11:54
    #38905698
Саабразим Аль-каши Бухани
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
В БД хранятся настройки (код + значение), их достаточнго много. Необходимо их прикручивать к соответствующим полям.
Можно сделать бин, который будет уметь получать их по коду. Как-то так:

Код: java
1.
2.
@Value("#{propertyManager.findByCode('COME.CODE')}")
String somePropertyValue;


но хочется короче, что-то типа
Код: java
1.
2.
@SomeAnnotation("COME.CODE")
String somePropertyValue;


Как это можно реализовать?
...
Рейтинг: 0 / 0
16.03.2015, 12:19
    #38905739
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
Саабразим Аль-каши БуханиВ БД хранятся настройки (код + значение), их достаточнго много. Необходимо их прикручивать к соответствующим полям.
Можно сделать бин, который будет уметь получать их по коду. Как-то так:

Код: java
1.
2.
@Value("#{propertyManager.findByCode('COME.CODE')}")
String somePropertyValue;


но хочется короче, что-то типа
Код: java
1.
2.
@SomeAnnotation("COME.CODE")
String somePropertyValue;


Как это можно реализовать?

Написать самому обработчик аннотации?!

:-)
...
Рейтинг: 0 / 0
16.03.2015, 12:29
    #38905756
Саабразим Аль-каши Бухани
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
mad_nazgul,

Это вариант раз. Проблема в том, что я не совсем пока понял, как это органичнее реализовать в спринге.
Допускаю так же, что есть вариант номер два.
...
Рейтинг: 0 / 0
16.03.2015, 12:44
    #38905786
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
...
Рейтинг: 0 / 0
16.03.2015, 13:39
    #38905860
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
Саабразим Аль-каши Буханиmad_nazgul,

Это вариант раз. Проблема в том, что я не совсем пока понял, как это органичнее реализовать в спринге.
Допускаю так же, что есть вариант номер два.

На сколько я понимаю Spring тут не причем.
Вам просто нужно написать свой обработчик аннотации.
Который бы брал ключ из аннотации, искал бы его в БД и ч/з ReflectionAP подставлял бы значение в поле.
Ну я бы думал в этом направлении :-)
...
Рейтинг: 0 / 0
16.03.2015, 15:54
    #38906035
Саабразим Аль-каши Бухани
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
Вообще, начинаю подозревать, что аннотациями пользоваться не комильфо в данном случае. Пропертя же добавляются постоянно, а аннотации читаются единажды. Не перезагружать же сервер приложений каждый раз.
...
Рейтинг: 0 / 0
16.03.2015, 16:02
    #38906042
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
Саабразим Аль-каши БуханиПропертя же добавляются постоянно
хранение в файле. Какая тут динамика?
...
Рейтинг: 0 / 0
16.03.2015, 16:04
    #38906048
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
вернее в БД.
Делай сущность в БД "Параметры" - и всё.
Только всё обновить тоже не просто).
...
Рейтинг: 0 / 0
17.03.2015, 17:57
    #38907431
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
Petro123,

как то так :

Код: java
1.
2.
3.
4.
5.
public interface SiteKeyConfigService {

    Map<String, String> getSiteKeyConfig();
 
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Entity
public class SiteKeyConfig{

private String key;
private String value;


}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
@Repository
public class DefaultSiteKeyConfigService extends DefaultBindableDAO<SiteKeyConfig> implements SiteKeyConfigService{
    
    private ConcurrentMap<String, String> siteConfig;
    private Lock lock = new ReentrantLock();
    
   @PostConstruct
   public void postConstruct(){
       load();
   }
   
   @Transactional
    public void load() {
       ConcurrentMap<String, String>  config = new ConcurrentHashMap<String, String>();
        //TODO запросы select
        List<SiteKeyConfig> siteKeyConfigs =  getByCriteria(detachedCriteria, 0, 100);
        for (SiteKeyConfig siteKeyConfig : siteKeyConfigs) {
           config.put(siteKeyConfig.getKey(),siteKeyConfig.getValue());
       }
        
     
        
       this.siteConfig = config;
    }
    
    @Override
    public Map<String, String> getSiteKeyConfig() {
        return Collections.unmodifiableMap(siteConfig);
    }
    

    public String getValue(String key){
        if(siteConfig != null)
            return siteConfig.get(key);
        return null;
    }
    
    @Override
    public SiteKeyConfig save(SiteKeyConfig cfg) {
        cfg = super.save(cfg);
        load();
        return cfg;
    }
    
    
   // @Scheduled(fixedDelay = 60 * 1000)
    public void updateSiteConfig() {
        load();
    }




где после изменения в базе или на сервере перечитывать весь конфиг ! или делать это по таймеру Scheduled ?!
...
Рейтинг: 0 / 0
18.03.2015, 15:16
    #38908556
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring, Получение настроек из базёнки.
Саабразим Аль-каши Бухани, посмотри Spel. Может там уже есть готовое решение.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring, Получение настроек из базёнки. / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]