Spring & Spring Boot

DI_10_annoConfig

minNa2 2023. 7. 6. 18:17

AnnoConfig.java

package org.joonzis.DI_10_annoConfig;

import java.util.HashSet;
import java.util.Set;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

// sts 버전 3에서 사용 시 해당 프로젝트에 CGLIB 라이브러리 추가

@Configuration	// applicationContext와 같은 역할을 하는 자바 클래스
public class AnnoConfig {

	@Bean	// Bean을 만드는 어노테이션
	public Person human1() {	// <bean id="human1" class="org.joonzis.DI_10_annoConfig.Person">
		Set<String> hobbies = new HashSet<String>();
		hobbies.add("여행");
		hobbies.add("여행2");
		hobbies.add("여행3");
		
		Person person = new Person();
		person.setName("김");
		person.setAge(10);
		person.setHobbies(hobbies);
		
		return person;
	}
	
	@Bean(name = "human2") // @Bean(name="bean의 id")
	public Person abc() {
		Set<String> hobbies = new HashSet<String>();
		hobbies.add("밥 먹기");
		hobbies.add("음악 듣기");
		hobbies.add("돌아다니기");
		
		Person person = new Person();
		person.setName("박");
		person.setAge(20);
		person.setHobbies(hobbies);
		
		return person;
	}
	
	@Bean
	public PersonInfo pInfo() {
		Set<String> hobbies = new HashSet<String>();
		hobbies.add("게임");
		hobbies.add("게임2");
		hobbies.add("게임3");
		
		PersonInfo info = new PersonInfo();
		info.setPerson(new Person("최", 50, hobbies));
		
		return info;
	}
}

Person.java

package org.joonzis.DI_10_annoConfig;

import java.util.Set;

public class Person {
	private String name;
	private int age;
	private Set<String> hobbies;
	
	public Person() {}

	public Person(String name, int age, Set<String> hobbies) {
		super();
		this.name = name;
		this.age = age;
		this.hobbies = hobbies;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Set<String> getHobbies() {
		return hobbies;
	}

	public void setHobbies(Set<String> hobbies) {
		this.hobbies = hobbies;
	}

}

PersonInfo.java

package org.joonzis.DI_10_annoConfig;

public class PersonInfo {
	private Person person;
	
	public PersonInfo() {}
	
	public void info() {
		System.out.println("이름: " + person.getName());
		System.out.println("나이: " + person.getAge());
		System.out.println("취미: " + person.getHobbies());
	}

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}
	
	
}

PersonMain.java

package org.joonzis.DI_10_annoConfig;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class PersonMain {
	public static void main(String[] args) {
		/*
		 * Person person = new Person(); PersonInfo info = new PersonInfo();
		 * info.setPerson(person);
		 * 
		 * info.info();
		 */
		
		AnnotationConfigApplicationContext ctx =
				new AnnotationConfigApplicationContext(AnnoConfig.class);
		
		Person person1 = ctx.getBean("human1", Person.class);
		System.out.println("이름 : " + person1.getName());
		System.out.println("나이 : " + person1.getAge());
		System.out.println("취미 : " + person1.getHobbies());
		
		System.out.println("===================================");
		
		Person person2 = ctx.getBean("human2", Person.class);
		System.out.println("이름 : " + person2.getName());
		System.out.println("나이 : " + person2.getAge());
		System.out.println("취미 : " + person2.getHobbies());
		
		System.out.println("===================================");

		PersonInfo personInfo = ctx.getBean("pInfo", PersonInfo.class);
		/*
		 * System.out.println(personInfo.getPerson().getName());
		 * System.out.println(personInfo.getPerson().getAge());
		 * System.out.println(personInfo.getPerson().getHobbies());
		 */
		personInfo.info();
		
		
	}
}
반응형