Spring @DependsOn Annotation Eksempel
I Spring-rammen kan programmører tvinge IoC-beholderen til at initialisere en eller flere bønner. I denne øvelse vil vi udforske @DependsOn anmærkning.
1. Introduktion
- Forår er en open source-ramme, der er skabt til at håndtere kompleksiteten af en virksomhedsapplikationsudvikling
- En af de vigtigste fordele ved Spring-rammeværket er dens lagdelte arkitektur, som gør det muligt for udvikleren at være selektiv med hensyn til, hvilke af dens komponenter de kan bruge, samtidig med at de giver en sammenhængende ramme til
J2EE
applikationsudvikling - Forårsramme giver support og integration til forskellige teknologier til f.eks.:
- Support til transaktionsstyring
- Støtte til interaktion med de forskellige databaser
- Integration med Object Relationship-rammerne for f.eks. Hibernate, iBatis osv.
- Support for Dependency Injection, hvilket betyder, at alle de nødvendige afhængigheder vil blive løst ved hjælp af containere
- Understøttelse af
REST
stil web-tjenester
1.1 @DependsOn annotation i foråret
@DependsOn
annotation i fjeder tvinger IoC-beholderen til at initialisere en eller flere bønner. Denne annotation bruges direkte på enhver klasse eller indirekte annoteret med @Component
eller på metoder, der er kommenteret med @Bean
.
Åbn nu Eclipse IDE og lad os se, hvordan du implementerer denne annotation i forårets rammer!
2. Spring @DependsOn Annotation Eksempel
Her er en systematisk guide til implementering af denne tutorial i forårets rammer.
2.1 Anvendte værktøjer
Vi bruger Eclipse Kepler SR2, JDK 8 og Maven. Når det er sagt, har vi testet koden mod JDK 1.7, og det fungerer godt.
2.2 Projektstruktur
Lad os først gennemgå den endelige projektstruktur, hvis du er i tvivl om, hvor du skal oprette de tilsvarende filer eller mappe senere!
2.3 Projektoprettelse
Dette afsnit vil demonstrere, hvordan man opretter et Java-baseret Maven-projekt med Eclipse. I Eclipse IDE skal du gå til File -> New -> Maven Project
.
I vinduet New Maven Project vil det bede dig om at vælge en projektplacering. Som standard vil 'Brug standardarbejdspladsplacering' være valgt. Marker afkrydsningsfeltet 'Opret et simpelt projekt (spring over arketypevalg)', og klik bare på den næste knap for at fortsætte.
Den vil bede dig om at 'Indtast gruppen og artefakt-id'et for projektet'. Vi vil indtaste detaljerne som vist på billedet nedenfor. Versionsnummeret vil som standard være:0.0.1-SNAPSHOT
.
Klik på Udfør, og oprettelsen af et maven-projekt er fuldført. Hvis du observerer, har den downloadet maven-afhængighederne og en pom.xml
fil vil blive oprettet. Den vil have følgende kode:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.spring</groupId> <artifactId>Springdependsonannotationexample</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
Vi kan begynde at tilføje de afhængigheder, som udviklere ønsker, såsom Spring Boot osv. Lad os begynde at bygge applikationen!
3. Applikationsbygning
Nedenfor er de trin, der er involveret i udviklingen af denne applikation.
3.1 Maven-afhængigheder
Her specificerer vi afhængigheden for fjederstøvlen. Maven vil automatisk løse resten afhængigheder såsom Spring Beans, Spring Core osv. Den opdaterede filen vil have følgende kode:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.spring</groupId> <artifactId>Springdependsonannotationexample</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Spring @DependsOn annotation example</name> <description>A tutorial to understand the @dependson annotation in spring framework.</description> <!-- spring boot parent dependency jar --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <!-- spring boot jar --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> <build> <finalName>Springdependsonannotationexample</finalName> </build> </project>
3.2 Java-klasseoprettelse
Lad os skrive de Java-klasser, der er involveret i denne applikation.
3.2.1 Implementering af en bønne
Tilføj følgende kode til bønnedefinitionen.
A.java
package com.spring.beans; import org.springframework.beans.factory.annotation.Autowired; public class A { @Autowired private B b; @Autowired private C c; public A() { System.out.println("====== Bean A is initialized. ======"); } public void doSomething() { System.out.println("Inside doSomething() method of 'A' bean."); b.doSomething(); c.doSomething(); } }
3.2.2 Implementering af B bean
Tilføj følgende kode til bønnedefinitionen.
B.java
package com.spring.beans; public class B { public B() { System.out.println("====== Bean B is initialized. ======"); } public void doSomething() { System.out.println("Inside doSomething() method of 'B' bean."); } }
3.2.3 Implementering af C bean
Tilføj følgende kode til bønnedefinitionen.
C.java
package com.spring.beans; public class C { public C() { System.out.println("====== Bean C is initialized. ======"); } public void doSomething() { System.out.println("Inside doSomething() method of 'C' bean."); } }
3.2.4 Implementering af konfigurationsklasse
Tilføj følgende kode til den Java-baserede konfigurationsklasse.
Config.java
package com.spring.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; import com.spring.beans.A; import com.spring.beans.B; import com.spring.beans.C; @Configuration public class Config { @Bean(name= "beanone") @DependsOn(value= { "beantwo", "beanthree" }) public A getA() { return new A(); } @Bean(name= "beantwo") public B getB() { return new B(); } @Bean(name= "beanthree") public C getC() { return new C(); } }
3.2.5 Implementering af hovedklasse
Tilføj følgende kode til hovedklassen.
Myapplication.java
package com.spring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import com.spring.beans.A; @SpringBootApplication public class Myapplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(Myapplication.class, args); A a = context.getBean(A.class); a.doSomething(); // Closing the context object. context.close(); } }
4. Kør programmet
For at køre programmet skal du højreklikke på Myapplication.java
klasse, Run As -> Java Application
. Udviklere kan fejlsøge eksemplet og se, hvad der sker efter hvert trin. God fornøjelse!
5. Projektdemo
Koden viser følgende logfiler som output af denne øvelse.
====== Bean B is initialized. ====== ====== Bean C is initialized. ====== ====== Bean A is initialized. ====== 2019-01-22 12:43:02.028 INFO 13688 --- [ main] com.spring.Myapplication : Started Myapplication in 0.856 seconds (JVM running for 1.283) Inside doSomething() method of 'A' bean. Inside doSomething() method of 'B' bean. Inside doSomething() method of 'C' bean.
Det er alt for denne tutorial, og jeg håber, at artiklen tjente dig, hvad end du ledte efter. God læring og glem ikke at dele!
6. Konklusion
Dette indlæg definerer implementeringen af @DependsOn-annotationen i forårets rammer og hjælper udviklere med at forstå den grundlæggende konfiguration, der kræves for at opnå dette. Udviklere kan downloade eksempelapplikationen som et Eclipse-projekt i afsnittet Downloads.
7. Download Eclipse Project
Dette var et eksempel på Spring @DependsOn annotation for beginners.spring