Konfiguracja aplikacji Spring MVC

0

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?

0

Możesz trochę jaśniej napisać co chcesz zrobić?

0

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

1

Może chodzi Ci o propertiesy?

0

Tak, dokładnie o to mi chodziło. Dzięki za pomoc :D

0

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ć?

0

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

0

Jeśli dobrze zrozumiałem: stwórz klasę Settings i wstrzyknij do niej twoje wartości, a samo Settings wstrzyknij do kontrolera.

0

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;
}
0

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

0
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.

0

To miałem na myśli. Przyjemnie się w nim pisze, a z tego ze jest bardzo rozbudowany zdaję sobie sprawę

1 użytkowników online, w tym zalogowanych: 0, gości: 1