목록스프링 (42)
진취적 삶
스프링 컨테이너는 초기화와 종료라는 라이프 사이클을 갖는다. public class Main2 { public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); Greeter g = ctx.getBean("greeter", Greeter.class); String msg = g.greet("스프링"); System.out.println(msg); ctx.close(); } } AnnotationConfigApplicationContext 생성자를 이용해서 컨텍스트 객체를 생성할때 스프링 컨테이너를 초기화 한다. clos..
빈 객체의 라이프 사이클은 객체 생성 → 의존 설정 → 초기화 → 소멸 6.2.1 빈 객체의 초기화와 소멸: 스프링 인터페이스 InitializingBean , DisposableBean InitializingBean 은 초기화 과정에서 afterPropertiesSet() 메서드 실행 DisposableBean 은 소멸 과정에서 destroy() 메서드 실행 초기화와 소멸 의 예 데이터 베이스 커넥션 풀 커넥션 풀을 위한 빈 객체는 초기화 과정에서 데이터베이스 연결을 생성한다. 빈객체를 소멸할 때 사용중인 데이터베이스 연결을 끊어야 한다. 채팅 클라이언트 서버와 연결을 생성하고 끊는 작업은 초기화와 소멸 @Configuration public class AppCtx { @Bean public Clien..
Client client1 = ctx.getBean("client",Client.class) Client client2 = ctx.getBean("client",Client.class) //client1 == client2 true 한 식별자에 대해 한 개의 객체만 존재하는 빈은 싱글톤 범위를 갖는다. 빈의 범위를 프로토타입으로 지정하면 빈 객체를 구할때마다 매번 새로운 객체를 생성한다. 프로토타입 생성 @Bean @Scope("prototype") public Client client() { Client client = new Client() client.setHost("host") return client ; } 싱글톤의 경우 @Bean @Scope("singleton") public Client c..
@Configuration @ComponentScan(basePackages = {"spring"}) public class AppCtx { @Bean @Primary public MemberPrinter memberPrinter1() { return new MemberPrinter(); } @Bean public MemberPrinter memberPrinter2() { return new MemberSummaryPrinter(); } @Bean public VersionPrinter versionPrinter() { VersionPrinter versionPrinter = new VersionPrinter(); versionPrinter.setMajorVersion(5); versionPrinter...
스프링이 검색해서 빈으로 등록할수 있으려면 클래스에 @Component 을 붙여야한다 ChangePasswordService MemberDao MemberInfoPrinter MemberListPrinter MemberRegisterService Component 에 속성값 지정 안하는 경우 클래스 이름의 첫글자를 소문자로 바꾼 이름 속성값을 지정하는 경우 해당 속성값을 이름으로 사용하면 된다. @Component("listPrinter") public class MemberListPrinter { ....
private static void processVersionCommand() { VersionPrinter versionPrinter = ctx.getBean("versionPrinter",VersionPrinter.class); versionPrinter.print(); } private static void processListCommand() { MemberListPrinter listPrinter = ctx.getBean("listPrinter",MemberListPrinter.class); listPrinter.printAll(); } MemberRegisterService regSvc = ctx.getBean(MemberRegisterService.class); ChangePasswordSe..
정규표현식을 사용해서 제외 대상 지정 @ComponentScan(basePackages = {"spring"}, excludeFilters = @Filter(type=FilterType.REGEX,pattern = "spring\\..*Dao")) 5.4.1 기본 스캔 대상 @Component 를 붙인 클래스만 컴포넌트 스캔 대상에 포함되는것은 아니다 . @Component @Controller @Service @Repository @Aspect @Configureation