예제 4-1 초기화 콜백 메서드가 정의된 Singer 클래스([[bean-init-method]] Singer.java)
package com.apress.prospring5.ch4; import org.springframework.beans.factory.BeanCreationException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class Singer { 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; } private void init() { System.out.println("빈 초기화"); if (name == null) { System.out.println("기본 이름 사용"); name = DEFAULT_NAME; } if (age == Integer.MIN_VALUE) { throw new IllegalArgumentException( Singer.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-xml.xml"); ctx.refresh(); getBean("singerOne", ctx); getBean("singerTwo", ctx); getBean("singerThree", ctx); ctx.close(); } public static Singer getBean(String beanName, ApplicationContext ctx) { try { Singer bean = (Singer) ctx.getBean(beanName); System.out.println(bean); return bean; } catch (BeanCreationException ex) { System.out.println("빈 구성 도중 에러 발생: " + ex.getMessage()); return null; } } }