[Java를 통한 DI 설정방법]
: 어노테이션 이용하기
Student.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | public class Student { private String name; private int age; private ArrayList<String> hobbies; private double height; private double weight; // 필드 public Student(String name, int age, ArrayList<String> hobbies) { this.name = name; this.age = age; this.hobbies = hobbies; // name, age, 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 ArrayList<String> getHobbies() { return hobbies; } public void setHobbies(ArrayList<String> hobbies) { this.hobbies = hobbies; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public double getWeight() { return weight; } public void setWeight(double weight) { // 전체 setter, getter this.weight = weight; } } | cs |
*
5개의 필드 + 3개의 생성자 + 전체 setter, getter
ApplicationConfig.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | @Configuration public class ApplicationConfig { @Bean public Student student1() { ArrayList<String> hobbies = new ArrayList<String>(); hobbies.add("수영"); hobbies.add("요리"); Student student = new Student("yul", 100, hobbies); student.setHeight(170); student.setWeight(60); return student; } @Bean public Student student2() { ArrayList<String> hobbies = new ArrayList<String>(); hobbies.add("음악"); hobbies.add("독서"); Student student = new Student("hong", 30, hobbies); student.setHeight(170); student.setWeight(60); return student; } } | cs |
*
생소하고 낯설 뿐이지 어려운 것은 아니다.
그동안 xml파일에서 Bean으로 만들어주었던 부분을 java 애너테이션화 했을 뿐
@Configuration :
이 어노테이션은 설정파일로 쓸거라고 선언하는 것과 같다.
@Bean
xml에서 하나의 객체를 나타낸 것처럼 Bean 어노테이션을 쓰고
자바에서 인스턴스 객체 생성, 접근을 한 것처럼 똑같이 해주기만 하면 된다.
MainClass.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class MainClass { public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class); Student student1 = ctx.getBean("student1", Student.class); System.out.println("이름 : " + student1.getName()); System.out.println("나이 : " + student1.getAge()); System.out.println("취미 : " + student1.getHobbies()); System.out.println("신장 : " + student1.getHeight()); System.out.println("체중 : " + student1.getWeight()); System.out.println("============================"); Student student2 = ctx.getBean("student2", Student.class); System.out.println("이름 : " + student2.getName()); System.out.println("나이 : " + student2.getAge()); System.out.println("취미 : " + student2.getHobbies()); System.out.println("신장 : " + student2.getHeight()); System.out.println("체중 : " + student2.getWeight()); ctx.close(); } } | cs |
*
사용방법은 xml에서 뽑아온 것과 동일하다.
'프로그래밍 > Spring' 카테고리의 다른 글
Spring / 스프링 컨테이너의 생명주기(lifecycle) (0) | 2018.04.07 |
---|---|
Spring / xml과 Java를 같이 사용하는 방법 (0) | 2018.04.07 |
Spring / DI 사용의 장점 (0) | 2018.04.07 |
Spring / 직접 or 참조 DI설정 (0) | 2018.04.07 |
Spring / constructor-arg를 통한 의존주입 (0) | 2018.04.07 |