@Profile-Annotation in Spring 4

In diesem Tutorial wird erklärt, wie Sie Profile in Ihrer Spring-Anwendung für verschiedene Umgebungen aktivieren. Außerdem werden in diesem Tutorial die neuen Verbesserungen in der Version Spring 4.0 erläutert und erläutert, wie sie sich von den älteren Versionen unterscheidet.

Wenn Sie an Echtzeitprojekten arbeiten, ist es oft eine Grundvoraussetzung, über verschiedene Umgebungen wie Entwicklung, Test und Produktion zu verfügen. In diesem Szenario wären die zugrunde liegenden Ressourcen (z. B. Datenbank, Dateisystem usw.) für jede Umgebung unterschiedlich. Die Herausforderungen entstehen, wenn Sie Ihren Quellcode in andere Umgebungen verschieben möchten. Sie müssten die Konfigurationen anpassen, um auf neue Umgebungsdetails wie Datenbank usw. zu verweisen. Die Lösung für das oben genannte Problem besteht darin, für jede Umgebung unterschiedliche Profile zu erstellen und diese zu aktivieren, wenn Sie in eine andere Umgebung wechseln.

Liste der Frühlings-Tutorials: Frühlings-Tutorial

@Profile-Anmerkung wird als Teil der Spring Framework 3.1-Version eingeführt. Die @Profile-Annotation hilft Entwicklern, mehrere Konfigurationsdetails für verschiedene Umgebungen zu erstellen. Vor Spring 4 werden von @Profile nur Annotationen auf Bean-Ebene unterstützt. Mit Spring 4 kann dies auf Methodenebene genutzt werden. Das gibt mehr Kontrolle und macht die Erstellung mehrerer Konfigurationsdateien überflüssig. Dieses Tutorial bietet ein einfaches Beispiel für die @Profile-Annotation.

Das offizielle Spring-Dokument definiert @Profile als:

Spring-Profile bieten eine Möglichkeit, Teile Ihrer Anwendungskonfiguration zu trennen und sie nur in bestimmten Umgebungen verfügbar zu machen.

Ich habe ein sehr einfaches Beispiel geschrieben, um die Leistungsfähigkeit der @Profile-Funktion in Spring 4 zu demonstrieren. Dieses Beispiel deklariert die Datenquelle für Entwickler und Produkt. Durch die Verwendung der @Profile-Annotation wird von der Testklasse eine geeignete Datenquelle aufgerufen.

@Profile-Annotation in Spring 4

@Profile-Anmerkung

Die Syntax für diese Anmerkung lautet @Profile(“dev”). Wenn eine mit einer Annotation markierte Bean oder Methode diesem bestimmten Profilnamen zugeordnet wird. In diesem Beispiel wird die Methodentypanmerkung verwendet (Verbesserungen in Spring 4). Wobei man es auch auf Klassenebene macht.

@ActiveProfiles-Anmerkung

Wie teilen wir dem Container mit, welches Profil gerade aktiv ist, um die richtigen Konfigurationen aufzunehmen? Wir müssen @ActiveProfiles verwenden, um das aktuell aktive Profil mitzuteilen. Dies kann über XML, JavaConfig, Annotations und programmatisch erfolgen.

Anmerkungskonfiguration

@ActiveProfiles(profiles = "dev")
public class DevConfigTest {
//code here
}

Web.xml-Konfiguration

<context-param>
  <param-name>spring.profiles.active</param-name>
  <param-value>DOUBLEUPMINT</param-value>
</context-param>

Programmatische Konfiguration

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
//Enable a "live" profile
context.getEnvironment().setActiveProfiles("live");

Beispiel für eine @Profile-Anmerkung

Hier ist die Beispielanwendung mit der @Profile-Annotation.

Student.java

package javabeat.net.spring.core;

public class Student {
	private String id;
	private String name;
	private String grade;

	public Student(String id, String name, String grade){
		this.id = id;
		this.name = name;
		this.grade = grade;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGrade() {
		return grade;
	}

	public void setGrade(String grade) {
		this.grade = grade;
	}

}

DevEnvConfig.java

package javabeat.net.spring.core;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
@Profile("dev")
public class DevEnvConfig {
	@Bean
	public Student user(){
		return new Student("001", "Dev Student 1","Grade 1");
	}
}

ProdEnvConfig.java

package javabeat.net.spring.core;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
@Profile("prod")
public class ProdEnvConfig {
	@Bean
	public Student user(){
		return new Student("002", "Prod Student 1","Grade 2");
	}
}

ProductionDataSourceConfig.java

package javabeat.net.spring.core;

import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
@Profile("prod")
public class ProductionDataSourceConfig {
	  @Bean
	  public DataSource dataSource(){
		//Do connection related task
    	        return null;
	  }
}

SpringProfileTest.java

package javabeat.net.spring.core;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class SpringProfileTest {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
		ctx.getEnvironment().setActiveProfiles("prod");
		ctx.scan("javabeat.net.spring.core");
		ctx.refresh();
		Student student = ctx.getBean(Student.class);
		System.out.println("\nStudent Id:" + student.getId() + ", \nStudent Name:" + student.getName()
				+ ", \nStudent Grade : " + student.getGrade());
	}
}

Zusammenfassung

In diesem Tutorial wurde gezeigt, wie Sie die @Profile-Annotation in Ihrem Projekt verwenden. Es ist ein einfaches Beispiel und ich hoffe, dass es Ihnen hilft, die Konzepte zu verstehen. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen