Spring Framework의 Java Based Configuration(@Configuration, @Bean 어노테이션…

 

Spring Framework Java Based Configuration(@Configuration, @Bean 어노테이션), 스프링 자바설정

 

 

 

작성자 : 이종철

 

n  스프링은 자바 빈을 다루는 것이 핵심인데 XML 파일에 자바빈을 정의하는 것도 한 방법이지만 자바기반의 설정을 이용하여 XML 설정없이 자바빈을 정의할 수 있다.

n  @Configuration을 사용하여 클래스에 어노테이션을 추가하면 Spring IoC 컨테이너가 빈(Bean) 정의의 소스로 클래스를 사용할 수 있다.

n  @Bean 어노테이션은 Spring에게 @Bean으로 주석처리된 메소드가 Spring 애플리케이션 컨텍스트에서 빈으로 등록 되어야하는 객체를 리턴한다는 것을 알려준다.

n  먼저 XML 설정 방법으로 간단히 예제를 만들어 보자.

 

n  HelloWorld.java(빈으로 등록될 클래스)

package hello;

 

public class HelloWorld {

      public void sayHello() {

            System.out.println("Hello~ Spring...");

      }

}

 

n  beans.xml(빈을 정의한 XML 설정파일)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

 

      <bean id="helloWorld" class="hello.HelloWorld"/>

</beans>

 

n  3. HelloMain.java(빈을 요청해서 사용하는 메인 클래스)

package hello;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

public class HelloMain {

      public static void main(String[] args) {

            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

            HelloWorld h = context.getBean(HelloWorld.class);

            h.sayHello();

      }

}

 

n  스프링 자바설정을 이용하여 예제를 변경해보자. beans.xml을 삭제하고 HelloConfig.java 파일을 만들자.

 

n  HelloConfig.java

package hello;

 

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

 

@Configuration

public class HelloConfig {

      @Bean

      public HelloWorld helloWorld() {   //메소드명이 빈의 이름

            return new HelloWorld();

      }

}

 

n  HelloMain.java

package hello;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

 

public class HelloMain {

      public static void main(String[] args) {

            ApplicationContext context = new AnnotationConfigApplicationContext(HelloConfig.class);

            HelloWorld h = (HelloWorld) context.getBean("helloWorld");   // 이름을 인자로메소드명이 이름

            h.sayHello();

      }

}

 

 

 

Comments