예제 4-6 @PostConstruct 애너테이션 적용([[post-construct]] SingerWithJSR250.java)
package com.apress.prospring5.ch4; import javax.annotation.PostConstruct; import org.springframework.beans.factory.BeanCreationException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class SingerWithJSR250 { private static final String DEFAULT_NAME = "Eric Clapton"; private String name; private int age = Integer.MIN_VALUE; public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } @PostConstruct private void init() throws Exception { System.out.println("빈 초기화"); if (name == null) { System.out.println("기본 가수 이름 설정"); name = DEFAULT_NAME; } if (age == Integer.MIN_VALUE) { throw new IllegalArgumentException( SingerWithJSR250.class +" 빈 타입에는 반드시 age 프로퍼티를 설정해야 합니다."); } } public String toString() { return "\t이름: " + name + "\n\t나이: " + age; } public static void main(String... args) { GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.load("classpath:spring/app-context-annotation.xml"); ctx.refresh(); getBean("singerOne", ctx); getBean("singerTwo", ctx); getBean("singerThree", ctx); ctx.close(); } private static SingerWithJSR250 getBean(String beanName, ApplicationContext ctx) { try { SingerWithJSR250 bean = (SingerWithJSR250) ctx.getBean(beanName); System.out.println(bean); return bean; } catch (BeanCreationException ex) { System.out.println("빈 구성 도중 에러 발생: " + ex.getMessage()); return null; } } }