Spring & Spring Boot

스프링(Spring) Ioc 컨테이너 에서 POJO관리 - [ 스프링5 레서피 ]

사과씨앗 2021. 1. 5. 22:15
728x90
반응형

-- 스프링 5 레시피 책을 공부하며 작성한 글입니다. --

 

안녕하세요 이번 글에서는 @Configuration , @Bean  어노테이션을 이용하여 자바 POJO를 생성하고 사용하여 보겠습니다.

 

먼저 프로퍼티를 가진 객체를 만들어 줍니다.

 

package com.apress.springrecipes.sequence;

import java.util.concurrent.atomic.AtomicInteger;

public class SequenceGenerator {

	
	private String prefix;
	private String suffix;
	private int inital;
	private final AtomicInteger counter = new AtomicInteger();
	
	public SequenceGenerator() {
	
	}

	public String getSequence() {
		StringBuilder builder = new StringBuilder();
		builder.append(prefix)
			   .append(inital)
			   .append(counter.getAndIncrement())
			   .append(suffix);
		return builder.toString();
	}

	public void setPrefix(String prefix) {
		this.prefix = prefix;
	}


	public void setSuffix(String suffix) {
		this.suffix = suffix;
	}


	public void setInital(int inital) {
		this.inital = inital;
	}

	
	
	
}

 

그다음 Bean을 만들어 주기 위해 클래스를 하나 더 만들어 줍니다.

 

package com.apress.springrecipes.sequence.config;

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

import com.apress.springrecipes.sequence.SequenceGenerator;

@Configuration
public class SequenceGeneratorConfiguration {

	@Bean 
	public SequenceGenerator sequenceGenerator() {
		SequenceGenerator seqqen = new SequenceGenerator();
		seqqen.setPrefix("30");
		seqqen.setSuffix("A");
		seqqen.setInital(100000);
		return seqqen;
	}
	
}

 

@Configuration 어노테이션을 클래스에 선언하면 클래스 내부에 @Bean 어노테이션을 사용한 메서드 들을 Ioc컨테이너의 자바 POJO로 등록할 수 있습니다.

 

위처럼 코드를 작성하여 sequenceGenerator라는 POJO를 Ioc 컨테이너에 등록합니다.

 

package com.practice.run;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.apress.springrecipes.sequence.SequenceGenerator;
import com.apress.springrecipes.sequence.config.SequenceGeneratorConfiguration;

public class run {

	public static void main(String[] args) {
		//등록된 빈을 가져오기 위해 ApplicationContext에 접근하기 위한 context객체를 만들어 줍니다.
		ApplicationContext context =
				new AnnotationConfigApplicationContext(SequenceGeneratorConfiguration.class);
		
		//getBean을 사용하여 Ioc컨테이너 에서  SequenceGenerator 빈을 가져옵니다. 
		SequenceGenerator generator = context.getBean(SequenceGenerator.class);
		
		System.out.println(generator.getSequence());
		System.out.println(generator.getSequence());
		
		
	}
}

AppicationContext에 접근하여 Ioc 컨테이너에 등록되어 있는 Bean을 가져옵니다. 

 

main 메서드를 실행시키게 되면 다음과 같이 출력되는 것을 확인할 수 있습니다.

 

개인 복습용으로 간단히 정리하다 보니 설명이 많이 부족하네요 ㅎㅎ...

 

감사합니다.

728x90
반응형