'spring 자비 빈'에 해당되는 글 1건

- 이 글은 아래의 내용에서 이어지는 내용입니다.

 

[Spring기초] 의존성 주입:DI(DEPENDENCY INJECTION) - 생성자Constructor DI

- 이 글은 아래의 내용에서 이어지는 내용입니다. [Spring기초] 의존성 주입:DI(Dependency Injection) - Setter DI # 의존성 주입 : DI(Dependency Injection) -Setter DI 주입 - Spring 의존성 주입 중 Setter를..

minaminaworld.tistory.com


# 자바로 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. 결과화면


 

블로그 이미지

미나미나미

,