- 이 글은 아래의 내용에서 이어지는 내용입니다.
# 자바로 Bean 만들기
- Spring 의존성 주입을 XML 방식이 아닌 자바로 생성하는 방법.
1. Package JavaBean , JavaTestBean1.java
- 패키지 JavaBean에는 생성할 Bean JavaTestBean1.java를 만든다.
package JavaBean;
public class JavaTestBean1 {
public JavaTestBean1() {
System.out.println("JavaTestBean1이 생성이 되었습니다.");
}
}
2. Package config, JavaBeans.java
- 패키지 config에 JavaBeans.java는 기존의 XML 방식에서 Java형식으로 Bean을 정의한다.
package config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import JavaBean.JavaTestBean1;
// XML이 방식이 아닌 JAVA의 형식으로 beans.xml을 대체한다.
@Configuration
public class JavaBeans {
// AnnotationConfigApplcationContext 되는 순간 생성.
// getBean할 때 마다 동일한 객체 전달.
@Bean
public JavaTestBean1 testBean1_1() {
System.out.println("testBean1_1");
JavaTestBean1 jtb1 = new JavaTestBean1();
return jtb1;
}
// getBean하는 순간에 생성
// getBean할 때 마다, 객체 생성.
@Bean
@Lazy(true)
@Scope("prototype")
public JavaTestBean1 testBean1_2() {
System.out.println("testBean1_2");
JavaTestBean1 jtb1 = new JavaTestBean1();
return jtb1;
}
// testBean50이라는 이름으로 부르도 명시.
// name이 없는 경우 메소드명으로 부름(default 경우)
@Bean(name="testBean50")
public JavaTestBean1 testBean1_3() {
System.out.println("testBean1_3");
System.out.println("naming testBean50");
JavaTestBean1 jtb1 = new JavaTestBean1();
return jtb1;
}
@Bean(name="testBean100")
@Lazy(true)
public JavaTestBean1 testBean1_4() {
System.out.println("testBean1_4");
System.out.println("naming testBean100");
JavaTestBean1 jtb1 = new JavaTestBean1();
return jtb1;
}
}
3. Main.java
package main;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import JavaBean.JavaTestBean1;
import config.JavaBeans;
import constructorDI.StudentData;
import constructorDI.StudentTestBean;
public class Main {
public static void main(String[] args) {
// JAVA 파일을 사용하는 방식
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(JavaBeans.class);
JavaTestBean1 testBean1_1 = ctx.getBean("testBean1_1", JavaTestBean1.class);
System.out.printf("testBean1_1 = > %s\n", testBean1_1);
System.out.println("-------------------------------------------");
JavaTestBean1 testBean1_2 = ctx.getBean("testBean1_2", JavaTestBean1.class);
System.out.printf("testBean1_2 = > %s\n", testBean1_2);
System.out.println("-------------------------------------------");
JavaTestBean1 testBean50 = ctx.getBean("testBean50", JavaTestBean1.class);
System.out.printf("testBean50 = > %s\n", testBean50);
System.out.println("-------------------------------------------");
JavaTestBean1 testBean100 = ctx.getBean("testBean100", JavaTestBean1.class);
System.out.printf("testBean100 = > %s\n", testBean100);
System.out.println("-------------------------------------------");
ctx.close();
System.out.println("-ctx.close() 됨");
}
}
4. 결과화면
'[Spring]' 카테고리의 다른 글
[Spring] Bytebuddy를 사용한 .class 바꾸기 (0) | 2020.03.15 |
---|---|
[Spring기초] @Autowried , @Qualifier의 이해 (0) | 2019.10.25 |
[Spring기초] 의존성 주입:DI(DEPENDENCY INJECTION) - 생성자Constructor DI (0) | 2019.10.14 |
[Spring기초] 의존성 주입:DI(Dependency Injection) - Setter DI (0) | 2019.10.13 |
[Spring기초] 모든 Bean이 생성 시 실행되는 메소드(BeanPostProcessor) - BeanLifeCycle (0) | 2019.10.12 |