spring Tutorial
Erste Schritte mit dem Frühling
Suche…
Bemerkungen
Das Spring Framework ist ein Open Source-Anwendungsframework und eine Inversion des Steuerungscontainers für die Java-Plattform.
Versionen
Ausführung | Veröffentlichungsdatum |
---|---|
4.3.x | 2016-06-10 |
4.2.x | 2015-07-31 |
4.1.x | 2014-09-14 |
4.0.x | 2013-12-12 |
3.2.x | 2012-12-13 |
3.1.x | 2011-12-13 |
3.0.x | 2009-12-17 |
2.5.x | 2007-12-25 |
2.0.x | 2006-10-04 |
1.2.x | 2005-05-13 |
1.1.x | 2004-09-05 |
1,0.x | 2003-03-24 |
Setup (XML-Konfiguration)
Schritte zum Erstellen von Hello Spring:
- Untersuchen Sie Spring Boot , um herauszufinden , ob dies Ihren Bedürfnissen besser entspricht.
- Lassen Sie ein Projekt mit den richtigen Abhängigkeiten einrichten. Es wird empfohlen, dass Sie Maven oder Gradle verwenden .
- Erstellen Sie eine POJO-Klasse, z. B.
Employee.java
- Erstellen Sie eine XML-Datei, in der Sie Ihre Klasse und Variablen definieren können. zB
beans.xml
- Erstellen Sie Ihre Hauptklasse, z. B.
Customer.java
- Fügen Sie Spring-Beans (und ihre transitiven Abhängigkeiten!) Als Abhängigkeit hinzu.
Employee.java
:
package com.test;
public class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void displayName() {
System.out.println(name);
}
}
beans.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<bean id="employee" class="com.test.Employee">
<property name="name" value="test spring"></property>
</bean>
</beans>
Customer.java
:
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Customer {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Employee obj = (Employee) context.getBean("employee");
obj.displayName();
}
}
Darstellung der Kernfedern am Beispiel
Beschreibung
Dies ist eine in sich geschlossene Lauf Beispiel einschließlich / Inszenierung: Mindest Abhängigkeiten benötigt, Java - Konfiguration, Bean Erklärung Annotation und Java - Konfiguration, Dependency Injection von Constructor und von Eigentum und Pre / Post Haken.
Abhängigkeiten
Diese Abhängigkeiten werden im Klassenpfad benötigt:
Hauptklasse
Von Anfang an ist dies unsere Main-Klasse, die als Platzhalter für die main()
Methode dient, die den Anwendungskontext durch Zeigen auf die Configuration-Klasse initialisiert und alle verschiedenen Beans lädt, die zur Darstellung bestimmter Funktionen benötigt werden.
package com.stackoverflow.documentation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
//initializing the Application Context once per application.
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(AppConfig.class);
//bean registered by annotation
BeanDeclaredByAnnotation beanDeclaredByAnnotation =
applicationContext.getBean(BeanDeclaredByAnnotation.class);
beanDeclaredByAnnotation.sayHello();
//bean registered by Java configuration file
BeanDeclaredInAppConfig beanDeclaredInAppConfig =
applicationContext.getBean(BeanDeclaredInAppConfig.class);
beanDeclaredInAppConfig.sayHello();
//showcasing constructor injection
BeanConstructorInjection beanConstructorInjection =
applicationContext.getBean(BeanConstructorInjection.class);
beanConstructorInjection.sayHello();
//showcasing property injection
BeanPropertyInjection beanPropertyInjection =
applicationContext.getBean(BeanPropertyInjection.class);
beanPropertyInjection.sayHello();
//showcasing PreConstruct / PostDestroy hooks
BeanPostConstructPreDestroy beanPostConstructPreDestroy =
applicationContext.getBean(BeanPostConstructPreDestroy.class);
beanPostConstructPreDestroy.sayHello();
}
}
Anwendungskonfigurationsdatei
Die Konfigurationsklasse wird von @Configuration
Anmerkungen @Configuration
und im initialisierten Anwendungskontext als Parameter verwendet. Die Annotation @ComponentScan
auf Klassenebene der Konfigurationsklasse verweist auf ein Paket, das nach Beans und Abhängigkeiten durchsucht werden soll, die mit Annotationen registriert wurden. Schließlich dient die Annotation @Bean
als Bean-Definition in der Konfigurationsklasse.
package com.stackoverflow.documentation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.stackoverflow.documentation")
public class AppConfig {
@Bean
public BeanDeclaredInAppConfig beanDeclaredInAppConfig() {
return new BeanDeclaredInAppConfig();
}
}
Bean Deklaration von Annotation
Die @Component
Annotation dient zur Abgrenzung des POJO als Spring-Bean, das beim Scannen von Komponenten für die Registrierung verfügbar ist.
@Component
public class BeanDeclaredByAnnotation {
public void sayHello() {
System.out.println("Hello, World from BeanDeclaredByAnnotation !");
}
}
Bean-Deklaration nach Anwendungskonfiguration
Beachten Sie, dass wir unser POJO nicht kommentieren oder anderweitig kennzeichnen müssen, da die Bean-Deklaration / Definition in der Application Configuration-Klassendatei stattfindet.
public class BeanDeclaredInAppConfig {
public void sayHello() {
System.out.println("Hello, World from BeanDeclaredInAppConfig !");
}
}
Konstruktorinjektion
Beachten Sie, dass die Annotation @Autowired
auf Konstruktorebene festgelegt ist. Beachten Sie außerdem, dass die Standardeinstellung für die automatische Einstellung auf Grundlage des Typs der Bean (in diesem Fall BeanToBeInjected
) erfolgt, sofern dies nicht explizit durch den Namen definiert ist.
package com.stackoverflow.documentation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class BeanConstructorInjection {
private BeanToBeInjected dependency;
@Autowired
public BeanConstructorInjection(BeanToBeInjected dependency) {
this.dependency = dependency;
}
public void sayHello() {
System.out.print("Hello, World from BeanConstructorInjection with dependency: ");
dependency.sayHello();
}
}
Immobilieninjektion
Beachten Sie, dass die Annotation @Autowired
die Setter-Methode abgrenzt, deren Name dem JavaBeans-Standard entspricht.
package com.stackoverflow.documentation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class BeanPropertyInjection {
private BeanToBeInjected dependency;
@Autowired
public void setBeanToBeInjected(BeanToBeInjected beanToBeInjected) {
this.dependency = beanToBeInjected;
}
public void sayHello() {
System.out.println("Hello, World from BeanPropertyInjection !");
}
}
PostConstruct / PreDestroy-Haken
Wir können die Initialisierung und Zerstörung eines Beans durch die Haken @PostConstruct
und @PreDestroy
.
package com.stackoverflow.documentation;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component
public class BeanPostConstructPreDestroy {
@PostConstruct
public void pre() {
System.out.println("BeanPostConstructPreDestroy - PostConstruct");
}
public void sayHello() {
System.out.println(" Hello World, BeanPostConstructPreDestroy !");
}
@PreDestroy
public void post() {
System.out.println("BeanPostConstructPreDestroy - PreDestroy");
}
}
Was ist Spring Framework, warum sollten wir uns dafür entscheiden?
Spring ist ein Framework, das eine Reihe von Klassen bereitstellt. Auf diese Weise müssen wir keine Boiler-Plattenlogik in unseren Code schreiben. Daher bietet Spring eine abstrakte Ebene auf J2ee.
Zum Beispiel ist in Simple JDBC Application ein Programmierer zuständig
- Die Fahrerklasse wird geladen
- Verbindung herstellen
- Anweisungsobjekt erstellen
- Behandlung der Ausnahmen
- Abfrage erstellen
- Abfrage ausführen
- Verbindung schließen
Wird als Boilerplate-Code behandelt, da jeder Programmierer denselben Code schreibt. Der Einfachheit halber kümmert sich das Framework um die Boilerplate-Logik, und der Programmierer muss nur Geschäftslogik schreiben. Durch die Verwendung von Spring Framework können wir also Projekte mit minimalen Codezeilen schnell entwickeln, ohne Fehler, Entwicklungskosten und -zeit reduzieren.
Warum also Spring als Streben wählen, ist da
Strut ist ein Framework, das nur eine Lösung für Web-Aspekte bietet, und Struts sind in der Natur invasiv. Frühling hat viele Eigenschaften über Streben, also müssen wir Frühling wählen.
- Der Frühling ist nicht invasiv : Das bedeutet, dass Sie keine Klassen erweitern oder Schnittstellen für Ihre Klasse implementieren müssen.
- Frühling ist vielseitig : Das heißt, er kann in jede vorhandene Technologie in Ihrem Projekt integriert werden.
- Spring bietet End-to-End- Projektentwicklung: Das heißt, wir können alle Module wie Business-Layer, Persistence-Layer entwickeln.
- Frühling ist leicht : Das heißt, wenn Sie an einem bestimmten Modul arbeiten möchten, müssen Sie nicht den gesamten Frühling lernen, sondern nur das jeweilige Modul (z. B. Spring Jdbc, Spring DAO).
- Feder unterstützt Abhängigkeitseinspritzung .
- Spring unterstützt mehrere Projektentwicklungen, z. B .: Core Java-Anwendung, Webanwendung, Verteilte Anwendung, Unternehmensanwendung.
- Federstützen Aspect-orientierte Programmierung für Querschnittsthemen.
Endlich können wir sagen, dass der Frühling eine Alternative zu Struts ist. Spring ist jedoch kein Ersatz für die J2EE-API. Die von Spring bereitgestellten Klassen verwenden intern J2EE-API-Klassen. Der Frühling ist ein riesiger Rahmen, der in mehrere Module aufgeteilt wurde. Kein Modul ist von einem anderen als dem Spring Core abhängig. Einige wichtige Module sind
- Spring Core
- Spring JDBC
- Frühling AOP
- Frühling Transaktion
- Frühling ORM
- Spring MVC