Spring – XML konfigurační soubor a XML konfigurace

Spring má dva hlavní způsoby konfigurace (XML a Javu), ale tři hlavní přístupy ke konfiguraci a každý z těchto přístupů má několik názvů.

    • Konfigurace využívající XML (XML based configuration)
      • XML konfigurační soubor a XML konfigurace (XML config and XML-driven/based configuration)
      • XML konfigurační soubor a konfigurace anotacemi (XML config and annotation-driven/based configuration)
    • Konfigurace využívající Javu
      • Java konfigurační soubor a konfigurace anotacemi (Java config and annotation-driven/based configuration | Java based configuration | JavaConfig)

XML konfigurační soubor a XML konfigurace
V tomto příspěvku se podíváme na XML konfigurační soubor a XML konfigurace. V tomto případě se používá pro konfiguraci XML soubor (beans.xml), ve kterém jsou definovány beany.

Naše jednoduchá aplikace bude mít dvě rozhraní MessageService a SecurityService. Rozhraní MessageService bude mít metodu String getMessage() a SecurityService String encode(String text). Funkčnost aplikace je tato: nejdříve získá řetězec (metoda getMessage()) a ten potom zašifruje (metoda encode()). Vlastní způsob šifrování, implementovaný v SecurityServiceImpl, bude triviální. Všechny písmena e v textu změníme za € a všechna písmena s za §.

Struktura projektu

project
├───src
│   ├───main
│   │   ├───java
│   │   │   └───cz
│   │   │       └───vitfo
│   │   │           │   Main.java
│   │   │           │   MyApplication.java
│   │   │           │
│   │   │           └───service
│   │   │               │   MessageService.java
│   │   │               │   SecurityService.java
│   │   │               │
│   │   │               └───impl
│   │   │                       MessageServiceImpl.java
│   │   │                       SecurityServiceImpl.java
│   │   │
│   │   └───resources
│   │           beans.xml

Vytvoříme si třídu Main.java, ve které vytvoříme kontext Springu. Ve třídě Main.java budeme mít logiku naší aplikace.

beans.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="messageService" class="cz.vitfo.service.impl.MessageServiceImpl" />
	<bean id="securityService" class="cz.vitfo.service.impl.SecurityServiceImpl" />
	<bean id="myApplication" class="cz.vitfo.MyApplication">
		<constructor-arg ref="messageService" />
		<constructor-arg ref="securityService" />
	</bean>

</beans>

Main.java

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

		MyApplication application = context.getBean("myApplication", MyApplication.class);
		application.start();

		context.close();
	}
}

MyApplication.java

import cz.vitfo.service.MessageService;
import cz.vitfo.service.SecurityService;

public class MyApplication {

	private MessageService messageService;
	private SecurityService securityService;

	public MyApplication(MessageService messageService, SecurityService securityService) {
		this.messageService = messageService;
		this.securityService = securityService;
	}

	public void start() {
		String message = messageService.getMessage();
		String encoded = securityService.encode(message);

		System.out.println(message);
		System.out.println(encoded);
	}

	public MessageService getMessageService() {
		return messageService;
	}

	public void setMessageService(MessageService messageService) {
		this.messageService = messageService;
	}

	public SecurityService getSecurityService() {
		return securityService;
	}

	public void setSecurityService(SecurityService securityService) {
		this.securityService = securityService;
	}
}

MessageService.java

public interface MessageService {

	String getMessage();
}

MessageServiceImpl.java

import cz.vitfo.service.MessageService;

public class MessageServiceImpl implements MessageService {

	public String getMessage() {
		return "message";
	}

}

SecurityService.java

public interface SecurityService {

	String encode(String text);
}

SecurityServiceImpl.java

import cz.vitfo.service.SecurityService;

public class SecurityServiceImpl implements SecurityService {

	private static final String e = "€";
	private static final String s = "§";

	public String encode(String text) {
		text = text.replaceAll("e", e);
		text = text.replaceAll("s", s);
		return text;
	}
}

Výsledek

message
m€§§ag€

V tomto projektu je veškerá konfigurace v souboru beans.xml. V tomto souboru se také definují jednotlivé beany a také jejich závislosti (např. beany myApplication potřebuje v kontruktoru beany messageService a securityService).

Napsat komentář