Java >> Java tutorial >  >> Tag >> Spring

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

Java tag