Witajcie,
Czy istnieje możliwość podłączenia zewnętrznej konfiguracji do aplikacji webowej napisanej w springu? Jeżeli to jak? Za pomocą mavena? Trzeba stworzyć bean w ustawieniach servleta?
- Rejestracja:około 10 lat
- Ostatnio:prawie 5 lat
- Postów:174
- Rejestracja:około 10 lat
- Ostatnio:prawie 5 lat
- Postów:174
Chciałbym mieć możliwość do konfigurowania aplikacji z poziomu pliku np. XML, tak żebym nie musiał ingerować w kod chcąc zmienić nagłówek strony, tylko żeby ten został pobrany z pliku
- Rejestracja:około 10 lat
- Ostatnio:prawie 5 lat
- Postów:174
Tak, dokładnie o to mi chodziło. Dzięki za pomoc :D
- Rejestracja:około 10 lat
- Ostatnio:prawie 5 lat
- Postów:174
Mam jeszcze pewien problem jednak chyba z tym :P
Mam takie coś w Controllerze
@Autowired
@Value("${page_title}")
private String pageTitle;
Takie coś w xmlu servleta
<context:property-placeholder location="classpath:config.properties"/>
I taką treść pliku konfiguracyjnego
page_title=Strona przykladowa
Chciałbym przenieść te wszystkie zmienne z ustawieniami z Controllera do zewnętrznej klasy (np. Settings). Jak tego dokonać?

- Rejestracja:około 14 lat
- Ostatnio:ponad 5 lat
- Postów:400
Jeśli chcesz wstrzyknąć bean'a do pola klasy/ metody to używasz @Autowired.
Jeśl chcesz wstrzyknąć wartość z propertiesa do pola klasy to używasz tylko @Value, czyli:
@Value("${page_title}")
private String pageTitle;
Przykład użycia adnotacji @Value
http://www.javabeat.net/spring-load-properties-file-value-annotation/
Przykład użycia adnotacji @Autowired
http://www.mkyong.com/spring/spring-auto-wiring-beans-with-autowired-annotation/
Przykład aplikacji wykorzystujących properties'y oraz adnotację @Autowired:
https://github.com/DanielMichalski/spring-web-blogs

- Rejestracja:około 14 lat
- Ostatnio:ponad 5 lat
- Postów:400
Albo bezpośrednio wstrzykuj wartości propertiesa do kontrolera jeśli jest ich kilka:
@Controller
@RequestMapping("/example")
public class ExampleController {
@Value("${example_var1}")
private String exampleVar1;
@Value("${example_var1}")
private String exampleVar1;
@Value("${example_var1}")
private String exampleVar1;
}
- Rejestracja:około 10 lat
- Ostatnio:prawie 5 lat
- Postów:174
Działa :D
Zrobiłem tak:
Controller:
private Settings settings;
@Autowired
@Qualifier(value="settings")
public void setSettings(Settings settings) {
this.settings = settings;
}
XML servleta:
<beans:bean id="settings" class="cms.model.Settings"/>
Settings:
package cms.model;
import org.springframework.beans.factory.annotation.Value;
import java.io.Serializable;
public class Settings {
@Value("${header_title}")
private String headerTitle;
@Value("${header_subtitle}")
private String headerSubtitle;
@Value("${page_title}")
private String pageTitle;
public String getHeaderTitle() {
return headerTitle;
}
public void setHeaderTitle(String headerTitle) {
this.headerTitle = headerTitle;
}
public String getHeaderSubtitle() {
return headerSubtitle;
}
public void setHeaderSubtitle(String headerSubtitle) {
this.headerSubtitle = headerSubtitle;
}
public String getPageTitle() {
return pageTitle;
}
public void setPageTitle(String pageTitle) {
this.pageTitle = pageTitle;
}
}
Cały spring jest strasznie prosty, a ja już od 2 lat pisząc w Javie SE chyba mam za duże skłonności do kombinowania :)
Dzięki wielkie za pomoc :D

- Rejestracja:około 14 lat
- Ostatnio:ponad 5 lat
- Postów:400
Zaprogramowany napisał(a):
Cały spring jest strasznie prosty, a ja już od 2 lat pisząc w Javie SE chyba mam za duże skłonności do kombinowania :)
Dzięki wielkie za pomoc :D
Znając tylko DI w Spring nie możesz powiedzieć, że jest prosty, czy trudny.
Poznaj jeszcze AOP, WebFlow, Security, Integration etc to przekoszasz się czy jest taki prosty :) Przyjemnie się w nim pisze, ale jest mocno rozbudowany.
- Rejestracja:około 10 lat
- Ostatnio:prawie 5 lat
- Postów:174
To miałem na myśli. Przyjemnie się w nim pisze, a z tego ze jest bardzo rozbudowany zdaję sobie sprawę
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.