public class Foo extends javax.servlet.http.HttpServlet { ...
public class Bar implements javax.ejb.EntityBean { ...
@javax.persistence.Entity public class Baz { ...
public class SequenceGenerator {
private String prefix;
private String suffix;
private int initial;
private final AtomicInteger counter = new AtomicInteger();
public SequenceGenerator() {
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
public void setInitial(int initial) {
this.initial = initial;
}
public String getSequence() {
String builder = prefix +
initial +
counter.getAndIncrement() +
suffix;
return builder;
}
}
자바 POJO를 생성하기 위해 구성클래스를 만들어 보면,
@Configuration을 붙이면 스프링에 이 클래스가 구성 클래스임을 알려준다.
이 때, 스프링은 그 안에서 빈(Bean) 인스턴스를 찾게 된다.
따라서 빈 인스턴스를 찾을 수 있도록 @Bean 을 붙여준다.
@Bean을 붙여 메서드의 이름과 같은 빈 인스턴스가 생성된다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SequenceGeneratorConfiguration {
@Bean
public SequenceGenerator sequenceGenerator() {
SequenceGenerator seqgen = new SequenceGenerator();
seqgen.setPrefix("30");
seqgen.setSuffix("A");
seqgen.setInitial(100000);
return seqgen;
}
}
public static void main(String[] args) {
ApplicationContext context =
new AnnotationConfigApplicationContext(SequenceGeneratorConfiguration.class);
SequenceGenerator generator = context.getBean(SequenceGenerator.class);
// IoC 컨테이너로 POJO 클래스의 빈 인스턴스를 가져오기위해 getBean()을 사용한다.
// getBean()은 Object형이기 때문에 캐스팅 혹은 두 번째 인수에 빈 클래스명을 지정해줘야 한다.
System.out.println(generator.getSequence());
System.out.println(generator.getSequence());
}