Spring MVC-Anmerkungen: @Component, @Repository, @Service

In diesem Tutorial werden die Vorteile der Verwendung der Spring-MVC-Annotationen @Component, @Repository und @Service sowie deren Verwendung erläutert.

Spring Annotations sind eine der netten Funktionen zum Konfigurieren der Spring MVC-Anwendungen. Im Spring Framework sind zahlreiche Annotationen definiert. In unseren früheren Tutorials werden viele der am häufigsten verwendeten Anmerkungen detaillierter erklärt. Einige davon sind @Autowired, @Qualifier, @ControlAdvice und @RestController. In diesem Tutorial würde ich das noch genauer erklären Spring MVC-Anmerkungen @Component, @Repository und @Service.

Seit Spring Framework 2.5 wurden Annotationen als Alternative zu den XML-Konfigurationen zum Spring Framework hinzugefügt. In Spring 3.0 wurden weitere Funktionen hinzugefügt, z. B. das Scannen von Komponenten, mit dem die Pakete automatisch gescannt und die Beans geladen werden.

  • Lesen Sie auch: Die beliebtesten Frühlings-Tutorials

@Komponente

Anmerkungen zu Federkomponenten

Diese Annotation weist den Spring-Container an, die Bean auszuwählen, während das Komponenten-Scannen ausgeführt wird. Es ist eine allgemeinere Form der Annotationen und kann für jede Art von Beans verwendet werden, um den Komponenten-Scan-Mechanismus zu informieren. Die Deklaration würde so aussehen:

@Component("studentDAO")
public class StudentDAOImpl implements StudentDAO{
 public StudentDTO createStudent(){
 //code here
 }
}

In der Realität wird die Annotation @Component sehr selten verwendet, da andere spezialisierte Annotationen @Service, @Repository und @Controller verwendet werden können.

@Repository

@Repository ist eine spezielle Implementierung von @Component zur Angabe der Data Access Objects (DAO). Der Vorteil der Verwendung der @Repository-Annotation besteht darin, dass die DAOs in den DI-Container importiert werden. Außerdem macht diese Annotation die ungeprüften Ausnahmen (ausgelöst von DAO-Methoden) für die Übersetzung in Spring DataAccessException geeignet.

package javabeat.net.spring;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

//@Component("studentDAO") - This also correct
@Repository("studentDAO")
public class StudentDAOImpl implements StudentDAO{
     //code here
 }
}

@Service

Dies ist eine weitere spezialisierte Version von @Component, um den Spring-Komponenten-Scanmechanismus zum Laden der Serviceklassen zu informieren. Diese werden im Frühjahrsframework eingeführt, um den Serviceklassen in Zukunft spezifische Funktionen hinzuzufügen. Die Deklaration der @Service-Annotation wäre:

<pre>package javabeat.net.spring;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

//@Component("studentManager") - This also correct
@Service("studentManager")
public class StudentManagerImpl implements StudentManager{
     //code here
 }
}</pre>

Beispiel für Spring MVC-Anmerkungen

Hier ist das vollständige Arbeitsbeispiel unter Verwendung der in den obigen Abschnitten erläuterten Anmerkungen. In diesem Beispiel werden die Spring MVC-Annotationen @Component, @Repository und @Service verwendet.

StudentDTO.java

package javabeat.net.spring;

public class StudentDTO {
	private String id;
	private String name;
	private String 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;
	}
	public String toString(){
		StringBuffer buffer = new StringBuffer();
		buffer.append("\nStudent Id : " + this.id);
		buffer.append("\nStudent Name : " + this.name);
		buffer.append("\nStudent Grade : " + this.grade);
		return buffer.toString();
	}
}

StudentDAO.java

package javabeat.net.spring;

public interface StudentDAO {
	public StudentDTO createStudent();
}

StudentDAOImpl.java

package javabeat.net.spring;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

//@Component("studentDAO") - This also correct
@Repository("studentDAO")
public class StudentDAOImpl implements StudentDAO{
	public StudentDTO createStudent(){
		StudentDTO dto = new StudentDTO();
		dto.setId("001");
		dto.setName("Che");
		dto.setGrade("First");
		return dto;
	}
}

StudentManager.java

package javabeat.net.spring;

public interface StudentManager {
	public StudentDTO createStudent();
}

StudentManagerImpl.java

package javabeat.net.spring;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

//@Component("studentManager") - This also correct
@Service("studentManager")
public class StudentManagerImpl implements StudentManager{
	@Autowired StudentDAO studentDAO;
	public StudentDTO createStudent(){
		return studentDAO.createStudent();
	}
}

applicationContext.xml

<?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-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	<context:component-scan base-package="javabeat.net" />
</beans>

MainApp.java

package javabeat.net.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {

	public static void main(String[] args) {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("javabeat/net/spring/applicationContext.xml");
		StudentManager manager = (StudentManagerImpl)applicationContext.getBean("studentManager");
		System.out.println((manager.createStudent()));
	}

}

Zusammenfassung

Ich hoffe, dieses Beispiel hätte Ihnen geholfen, die grundlegende Verwendung der Spring-MVC-Annotationen @Component, @Service und @Repository zu verstehen. Diese werden am häufigsten für Spring MVC-Anwendungen verwendet. Bitte lesen Sie auch unsere Die beliebtesten Frühlings-Tutorials. 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