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

Spring @Bean – Hvad er Spring Bean med eksempler

Spring-rammen er en populær ramme, der lader dig oprette virksomhedsapplikationer bekvemt.

Kernen i fjederrammerne er afhængighedsinjektion .

Afhængighedsinjektion eller afhængighedsinversion er en måde, hvorpå du afkobler de konventionelle afhængigheder mellem objekter.

Student:
    id: Integer
    name: String
    address: Address

Address:
    street: String
    city: String
    pincode: String

For at forstå afhængighedsindsprøjtning, lad os tage et eksempel på klassen Elev og adresse.

Som du kunne se i ovenstående pseudo-kode, er Student- og Adresse-objekter relateret til hinanden.

Hver elev har én adresse, og hver adresse skal tilhøre en elev.

Normalt, i java, vil vi oprette adresseobjektet ved hjælp af new Address() og giv adresseobjektet til elev.

Derfor, når du har brug for et elevobjekt, skal du først oprette et adresseobjekt.

For at sige det anderledes kan vi sige, at Student-objektet er tæt koblet med Adresse-objektet.

Tæt kobling er dog ikke god på grund af forskellige årsager, såsom det vil være svært at teste, svært at administrere, hvis der er ændringer i adresseklassen.

For at løse dette problem blev afhængighedsinjektion introduceret.

Spring IoC container ( ApplicationContext og BeanFactory ) er en implementering af afhængighedsinjektion i Spring framework.

Spring Container konfigurerer objekter, bundter dem, skaber dem og styrer deres livscyklus fuldstændigt.

Disse objekter kaldes bønner i forårets terminologi.

Med andre ord er en springbean et objekt, der er konfigureret, oprettet og administreret af Spring-beholderen.

Sådan opretter du Spring Bean

Der er to måder at lave springbønner på.

En måde er ved at bruge XML-konfiguration, og en anden er ved at bruge annoteringer.

Tidligere plejede vi at definere bønner i XML-filen.

Senere kom annotationskonceptet, der gør det muligt at deklarere bean ved hjælp af @bean-annotation i en konfigurationsfil.

Hvis du ikke er klar over det, er en konfigurationsklasse en speciel klasse om foråret, der definerer bønnens definition.

Når springcontaineren ser en konfigurationsklasse, behandler den dem automatisk.

Nu, da vi kender det grundlæggende i springbean og konfigurationsklasse, kan vi oprette bean ved hjælp af @Bean-annotering.

Erklær en Bean ved hjælp af @Bean

Det er nemt at erklære en bønne i forårets rammer.

Du skal bare oprette en metode og annotere den metode med @Bean.

Hver gang springcontaineren finder konfigurationsklassen, behandler den denne klasse for at finde bønnedefinitionen.

Og når springcontainer ser en metode med @Bean-annotation, udfører den metoden og registrerer returværdien som en Bean i containeren( ApplicationContext ).

Lad os lave en demo for at forstå @Bean-konceptet i foråret.

package com.codedelay.springboot;

public class Student {
	private int id;
	private String studentName;
	private Address studentAddress;
	
	public Student(int id, String name, Address studentAddress) {
		this.id = id;
		this.studentName = name;
		this.studentAddress = studentAddress;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getStudentName() {
		return studentName;
	}

	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}

	public Address getStudentAddress() {
		return studentAddress;
	}

	public void setStudentAddress(Address studentAddress) {
		this.studentAddress = studentAddress;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", studentName=" + studentName + ", studentAddress=" + studentAddress + "]";
	}
}
package com.codedelay.springboot;

public class Address {
	private String street;
	private String cityName;
	private String pincode;
	
	public Address(String street, String cityName, String pincode) {
		this.street = street;
		this.cityName = cityName;
		this.pincode = pincode;
	}
	
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
	public String getCityName() {
		return cityName;
	}
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
	public String getPincode() {
		return pincode;
	}
	public void setPincode(String pincode) {
		this.pincode = pincode;
	}

	@Override
	public String toString() {
		return "Address [street=" + street + ", cityName=" + cityName + ", pincode=" + pincode + "]";
	}
}
package com.codedelay.springboot;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class StudentConfiguration {
	@Bean
	public Address getAddress() {
		return new Address("Madison Avenue", "New York", "10010");
	}
	
	@Bean
	@Qualifier("student")
	public Student getStudent() {
		return new Student(1, "Mark", getAddress());
	}
}


Java tag