poniedziałek, 15 grudnia 2014

Problem&Solution Property-placeholder + @Configuration + @Value = conversion problem

Problem wygląda następująco :
przy próbie wstrzelenia właściwości -> użycie @Value dostaję wyjątki świadczące o złej konwersji Stringa na Integera lub IllegalArgumentException przy próbie wstrzelenia wartości logiczej boolean.

Opis i rozwiązanie poniżej. Problem jest prosty ale czasem może się przytrafić.

Czas rozwiązania : 5 min (tylko ja wiedziałem czego szukać i czego brakuje, ale może komuś to pomoże)




Plik z właściwościami wygląda tak:

Klasa korzystająca z tych właściwości wygląda tak :
Ale podczas testu dostaję wyjątek :
oraz jak wartość  hbm2ddlAuto zamienie na Stringa :

Dzieje się tak ponieważ Spring nie ma załadowanego PropertyPlaceHolderConfigurera.
PropertyPlaceHolderConfigurer pozwala na externalizacje właściwości , dzięki czemu możesz oddzielić plik z właściowościami z konfiguracją projektu, zarówno w XML jak i w JavaConfig. Podczas działania programu PropertyPlaceholderConfigurer pobiera metadane i podmienia wartości dla ${someValue} w pliku xml czy w JavaConfig przy użyciu @Value.
Co może być jeszcze ważne PropertyPlaceholderConfigurer spodziewa się znaleźć dany plik na Twoim classpath, jeśli znajduje się gdzieś indziej można użyć :


Dzięki, któremu potrafi w locie np kowertować String -> Boolean , String -> Integter , etc

Rozwiązanie :
Dodać :

lub w przypadku JavaConfig :
Wtedy wszystko wraca do normy.
Dokładniejsze informacje znajdziesz w tym poście.

Brak komentarzy:

Prześlij komentarz