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();
}
}
반응형