Spring/Spring framework

@Configuration, @Bean, @Primary, @Qualifier, @ComponentScan, 호출

hoonssss 2023. 9. 10. 18:00
반응형
SMALL
package com.in28munutes.learnspringframework;

import java.util.Arrays;

import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration.AnnotationConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App02HelloWordSpring {
	
	
	public static void main(String[] args) {
		
		//1. Launch a Spring Context
		var context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class);
		
		//2. Configure the things that we want Spring to manage

		System.out.println(context.getBean("name"));
		
		System.out.println(context.getBean("age"));

		System.out.println(context.getBean("person"));
		
		System.out.println(context.getBean("person2MethodCall"));
		
		System.out.println(context.getBean("person3Parameters"));
		
		System.out.println(context.getBean("address2"));

		System.out.println(context.getBean("address3"));

		System.out.println(context.getBean(Address.class));

		System.out.println(context.getBean(Person.class));
		
		System.out.println(context.getBean("person5Qualifier"));
		
		//Arrays.stream(context.getBeanDefinitionNames()).forEach(System.out::println); //모든 Bean이름을 출력
		
		
		
	}
}
package com.in28munutes.learnspringframework;

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

record Person(String name, int age, Address address) {};
record Address(String firstLine, String City) {};

@Configuration
public class HelloWorldConfiguration {
	
	
	@Bean
	public String name() {
		return "Ranga";
	}
	
	@Bean
	public int age() {
		return 15;
	}
	
	@Bean
	public Person person() {
		return new Person("Ravi",20, new Address("new","Address"));
	}
	
	@Bean
	public Person person2MethodCall() {
		return new Person(name(), age(), address());
	}
	
	@Bean
	public Person person3Parameters(String name, int age, Address address3) {//name,age,address2,
		return new Person(name, age, address3);
	}
	
	@Bean
	@Primary
	public Person person4Parameters(String name, int age, Address address3) {
		return new Person(name, age, address3);
	}
	
	@Bean
	public Person person5Qualifier(String name, int age, @Qualifier("address3qualifier") Address address) {
		return new Person(name, age, address);
	}
	
	@Bean(name = "address2")
	@Primary
	public Address address() { 
		return new Address("baker street","London");
	}
	
	@Bean(name = "address3")
	@Qualifier("address3qualifier")
	public Address address3() {
		return new Address("Parame","ters");
	}
	
	
}

Ranga

15

Person[name=Ravi, age=20, address=Address[firstLine=new, City=Address]]

Person[name=Ranga, age=15, address=Address[firstLine=baker street, City=London]]

Person[name=Ranga, age=15, address=Address[firstLine=baker street, City=London]]

Address[firstLine=baker street, City=London]

Address[firstLine=Parame, City=ters]

Address[firstLine=baker street, City=London]

Person[name=Ranga, age=15, address=Address[firstLine=baker street, City=London]]

Person[name=Ranga, age=15, address=Address[firstLine=Parame, City=ters]]

반응형
LIST

'Spring > Spring framework' 카테고리의 다른 글

Spring framework  (0) 2023.09.11
Java Bean, POJO, Spring Bean  (0) 2023.09.10
Spring 전체구조  (0) 2023.08.26
Spring Stereotype Annotations  (0) 2023.08.26
Java 어노테이션과 XML 설정  (0) 2023.08.25