Properties in Spring 4 und Spring Boot
In Spring kann man zur Konfiguration eines Projektes unter anderem Properties welche in Property Dateien definiert sind verwenden. Im einfachsten Fall ist dies eine simple Text-Dateien mit Einträgen [name]=[Wert]. Es können aber auch YAML-Dateien oder Kommandozeilen-Parameter sein. Egal woher die Parameter kommen, sie werden automatisch als Properties zusammengefasst und können dann zum konfigurieren z.B. der Datenbank-Einstellungen, Mail-Server-Einstellungen und ähnliches verwendet werden.
Definition in der XML-Konfiguration
Zum einen kann man die Datei mit den Konfigurationswerten in der XML-Konfiguration angeben, in dem man den <context:property-placeholder ..> Tag verwendet:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <context:property-placeholder location="classpath:db.properties" /> </beans>
In der Datei db.properties können dann Werte für den DB-Zugriff folgendermaßen definiert sein:
database.driver=org.postgresql.Driver database.url=jdbc:postgresql://localhost:5432/mydb database.user=dbuser database.password=dbpasswd
Über Java-Annotation
Bei Java-basierter Konfiguration kann bei der @Configuration-Annotation über die @PropertySource-Annotation eine Datei angegeben werden:
@Configuration @PropertySource("classpath:db.properties") public class PropertiesConfig { @Bean public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } }
Oder man gibt dem PropertySourcesPlaceholderConfigurer-Objekt die Datei an:
@Configuration public class PropertiesConfig { @Bean public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() { PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); Resource res = new ClassPathResource("db.properties"); // oder wenn die Datei außerhalb des classpath liegt // Resource res = new FileSystemResource("C:\config\db.properties"); configurer.setLocation(res); return configurer; } }
Spring Boot
Spring Boot vereinfacht die Verwendung von Properties unter anderem, indem es Standard-Dateien gibt, welche automatisch verwendet werden. So genügt es z.B. einfach eine application.properties in unser /src/main/Resources-Verzeichnis zu geben, und diese Datei wird dann automatisch gelesen.
Eine genauere Beschreibung der verschiedenen Möglichkeiten die Properties in Spring Boot zu definieren, kann unter https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html nachgelesen werden.
Verwendung
Die Properties können einerseits in der XML-Konfiguration verwendet werden, z.B.:
<bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${database.driver}" /> <property name="url" value="${database.url}" /> <property name="username" value="${database.user}" /> <property name="password" value="${database.password}" /> </bean>
Andererseits kann auf die Werte mittels @Value-Annotation zugegriffen werden (siehe auch http://www.codersblog.de/werte-aus-spring-properties-verwenden/)
@Value("${config.filesPath}") private String filesPath = null;
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.