Dependency Injection .
Dependency Injection bedeutet, dass Objekte ihre Abhängigkeiten nicht selbst erzeugen, sondern vom Container bereitgestellt bekommen. Dadurch entsteht lose Kopplung und bessere Testbarkeit. In Spring geschieht das meist über Konstruktorinjektion oder @Autowired.
ApplicationContext ist.
Der ApplicationContext ist das zentrale Spring-Objekt, das alle Beans verwaltet. Er erstellt, konfiguriert und injiziert sie, hält Scopes ein und steuert den Lifecycle. In Spring Boot wird der Context automatisch beim Start initialisiert.
Spring Boot und Spring Framework?
Spring Boot baut auf dem klassischen Spring Framework auf, reduziert aber die Konfiguration erheblich – durch Auto-Configuration, Starter-Dependencies und eingebettete Server wie Tomcat. Dadurch lassen sich Microservices schnell erstellen und isoliert deployen.
Reactive WebFlux zwischen Imperatives Programming in Spring?
Im imperativen Ansatz wird jeder Aufruf blockierend ausgeführt – ein Thread pro Anfrage. Im reaktiven Ansatz (Spring WebFlux) werden asynchrone Streams verarbeitet – effizienter bei vielen gleichzeitigen Anfragen.
REST Controller Service und Repository in Spring?
Ein Controller verarbeitet HTTP-Anfragen und bildet die Schnittstelle zwischen Client und Businesslogik. Service enthält Businesslogik und orchestriert Abläufe. Repository kommuniziert mit der Datenbank.
@Controller und @RestController ist.
@Controller wird für klassische MVC-Views genutzt. @RestController kombiniert @Controller und @ResponseBody – Methoden liefern direkt JSON oder XML.
Änderungen zwischen Spring Boot 2 und 3?
Die wichtigste Änderung ist der Umstieg auf Jakarta EE 10 mit jakarta-Paketen. Spring Boot 3 benötigt mindestens Java 17 und bietet verbesserte Observability.
Wie hat sich die Observability geändert?
Spring Boot 3 integriert Micrometer 3 und OpenTelemetry nativ. Dadurch lassen sich Metriken Logs und Traces konsistent erfassen.
Spring Security 5 und 6 Spring Boot 3?
Spring Security 6 entfernt WebSecurityConfigurerAdapter und nutzt Lambda-basierte Konfiguration. SecurityFilterChains werden explizit als Beans definiert.
Auto-Configuration in Spring Boot funktioniert.
Spring Boot registriert Beans automatisch basierend auf Abhängigkeiten und Properties über @EnableAutoConfiguration.
@SpringBootApplication und @EnableAutoConfiguration ist.
@SpringBootApplication kombiniert @Configuration @EnableAutoConfiguration und @ComponentScan. Sie ist der Einstiegspunkt jeder Spring Boot Anwendung.
@ConfigurationProperties ist.
Mit @ConfigurationProperties lassen sich externe Konfigurationen typsicher in Java-Klassen binden. Sie ersetzt komplexe @Value-Konfigurationen.
JPA und Hibernate in Spring Boot.
JPA ist die ORM-Spezifikation Hibernate deren Implementierung. Spring Boot verbindet damit Datenbanktabellen mit Java-Objekten.
@Entity und @Repository ist.
@Entity markiert eine Klasse als Datenbankobjekt. @Repository kennzeichnet eine Bean für den Datenzugriff mit JPA.
@Transactional bewirkt.
@Transactional führt alle Operationen einer Methode in einer Transaktion aus. Bei Exceptions erfolgt automatisch ein Rollback.
CrudRepository JpaRepository und PagingAndSortingRepository ist.
CrudRepository bietet CRUD-Operationen. PagingAndSortingRepository ergänzt Paging und Sortierung. JpaRepository fügt JPA-spezifische Funktionen hinzu.
Exception Handling in Spring Boot.
Spring Boot nutzt @ControllerAdvice und @ExceptionHandler für zentrales Exception Handling. Fehler werden strukturiert als HTTP-Antworten zurückgegeben.
Was ist eine Spring Bean?
Eine Bean ist ein Objekt, das vom Spring Container erstellt und verwaltet wird. Lifecycle und Abhängigkeiten übernimmt Spring.
Scopes in Spring
Scopes definieren die Lebensdauer einer Bean. Beispiele sind singleton request oder prototype.
Singleton Scope
Im Singleton Scope existiert genau eine Bean-Instanz pro ApplicationContext. Das ist der Default in Spring.
Prototype Scope
Bei Prototype wird bei jeder Injection eine neue Bean erzeugt. Spring verwaltet nur die Erstellung.
Constructor Injection
Abhängigkeiten werden über den Konstruktor injiziert. Das ist die empfohlene und testfreundlichste Variante.
Field Injection
Abhängigkeiten werden direkt auf Felder injiziert. Sie ist einfacher, aber schlechter testbar.
Setter Injection
Abhängigkeiten werden über Setter gesetzt. Sie wird selten verwendet.
@Primary
@Primary legt fest, welche Bean bevorzugt injiziert wird. Das hilft bei mehreren Implementierungen.
@Qualifier
@Qualifier wählt gezielt eine bestimmte Bean aus. Er wird bei Mehrdeutigkeiten genutzt.
Spring Profiles
Profiles erlauben unterschiedliche Konfigurationen für z. B. dev test prod. Sie werden über spring.profiles.active aktiviert.
Externalized Configuration
Konfiguration wird außerhalb des Codes gehalten. Das erhöht Flexibilität und Sicherheit.
Spring Boot Starter
Starter sind vorkonfigurierte Abhängigkeiten für bestimmte Funktionen. Sie vereinfachen Setup und Konfiguration.
Embedded Server
Spring Boot nutzt eingebettete Server wie Tomcat oder Netty. Separate Server-Installation ist nicht nötig.
Actuator
Actuator stellt Monitoring-Endpunkte wie health oder metrics bereit. Er unterstützt Betrieb und Observability.
Health Indicator
Health Indicators liefern Statusinformationen über Komponenten. Sie werden vom Actuator genutzt.
Spring Data
Spring Data vereinfacht Datenzugriff durch Repositories. Viel Boilerplate-Code entfällt.
Derived Queries
Spring Data erzeugt Queries automatisch aus Methodennamen. Das reduziert manuelles SQL.
Open Session in View
Dieses Pattern hält die Session bis zur View offen. Es kann Lazy Loading ermöglichen, birgt aber Risiken.
Stateless Services
Spring Services sollten möglichst zustandslos sein. Das verbessert Skalierbarkeit und Testbarkeit.
Zuletzt geändertvor 9 Stunden