while(1) work();
반응형
8. 빈 생명 주기

빈 생성-소멸 과정 Spring 컨테이너는 아래와 같은 순서로 빈을 생성한다. 스프링 빈 생성 의존관계 주입 PostConstruct 콜백 객체 사용 PreDestory 콜백 객체 소멸 (단 생성자 주입을 사용하는 경우 의존관계 주입은 (당연히) 스프링 빈 생성과 동시에 일어난다) 위와 같은 생명주기 하에서, 빈이 생성되고 나서(post construct) 또는, 빈이 소멸되기 전(pre destroy)에 실행될 메서드를 지정할 수 있다. 어노테이션을 이용한 생명주기 콜백 JSR-250 표준 어노테이션인 @PostConstruct와 @PreDestroy 를 이용해 특정 생명주기에서 실행될 메서드를 지정할 수 있다. 다만 @PostConstruct와 @PreDestroy 어노테이션은 java.xml.ws...

article thumbnail
7. Singleton Pattern

Java Singleton 자바에서 Singleton 패턴을 구현하려면 아래와 같은 귀찮은 코드들이 필요하다. public class Singleton { private final static Singleton instance = new Singleton(); private Singleton() { // 객체 생성 방지하기 위해 private 생성자 사용 } public static Singleton getInstance() { return instance; } public void logic() { ... } } Singleton obj1 = Singleton.getInstance(); Singleton obj2 = Singleton.getInstance(); obj1 == obj2 //true Spr..

6. 모든 빈 조회

package com.sample.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); for (String beanName : context.getBeanDefinitionNames()) { System.out.println(beanName); }..

5. 진정한 DI

지금까지 구현한 코드에는 사실 여러 문제가 있다. 코드가 Spring Framework에 지나치게 의존하고 있다. getBean 메서드가 제공되지 않는(다른 이름으로 제공되는) DI 프레임워크로 교체해야한다면 모든 코드를 다 바꾸어야 한다. 생성된 ApplicationContext를 계속 전달하며 공유해야 한다. 사실 지금까지는 의존성을 주입받았다고 보기는 어렵다. 생성자를 통해 ApplicationContext를 주입 받았고, 그로부터 SampleRepository 타입 객체를 가져와 사용했을 뿐이다. 사전 준비 그 전에 먼저, 코드를 간소화하기 위해 Application class도 Bean으로 등록시켜주자. package com.sample.spring; import org.springframewo..

4. Annotation Context와 두 개의 Bean

Annotation을 이용한 빈 설정 XML을 이용해 빈을 설정하는 것은 상당히 번거롭다. Spring 3.2 버전부터 Java의 Annotation 문법을 사용해 빈 설정이 가능하도록 지원한다. package com.sample.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; //import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(Str..

article thumbnail
3. Spring Context 사용해보기

Spring의 IoC 기능은 org.springframework:spring-context 의존성으로부터 얻을 수 있음. spring-context 가 의존하는 패키지를 보면 아래와 같음 따라서 spring-context만 의존성에 추가하면 spring-core, spring-aop 등을 추가하지 않고 사용 가능하다. Maven project 생성 mvn archetype:generate 위 명령을 통해 비어있는 Maven Project를 생성할 수 있다. Maven과 같은 빌드 도구를 사용하지 않으려면 spring-context.jar 파일을 내려받고 javac -cp “spring-context.jar” xxxx.java 와 같이 컴파일 해야 한다. 뿐만 아니라 spring-context가 의존하는 ..

2. IoC와 DI

개요 Spring Framework를 처음 공부할 때 가장 어렵게 느낀 부분이 IoC와 DI에 대한 개념 DI(Dependency Injection; 의존성주입)는 클래스들 간의 연관관계를 클래스 내 코드로 작성하게 되면 강한 결합이 생기기 때문에, 이를 방지하고자 외부에서 주입하겠다는 의미 IoC(Inversion of Control; 제어의 역전) 는 DI를 개발자가 하는 것이 아니라 프레임워크가 대신 해준다는 의미 SOLID 원칙 객체 지향 프로그래밍 설계의 다섯 가지 기본 원칙 S (Single responsibility principle; 단일 책임 원칙) O (Open-closed principle; 개방 폐쇄 원칙) L (Liskov substitution principle; 리스코프 치환 ..

1. Spring Framework

개요 스프링은 “세계에서 가장 인기있는” 자바 프레임워크임 웹 서버 프로젝트에만 적용되는 프레임워크가 아님 모듈식 구조 스프링은 모듈식 구조를 가짐. 따라서 개발 시 필요한 모듈만 사용할 수 있음 Spring Framework Spring Boot Spring Data Spring Cloud Spring Security Spring Batch 등 특정 분야에 적합한 여러개의 모듈로 나뉘어져 있음 주요 패키지 https://mvnrepository.com/artifact/org.springframework Maven Repository에 org.springframework를 검색하면 다양한 스프링 패키지들이 나옴 spring-core : 각 스프링 모듈에서 필요한 공통 클래스들 spring-context ..

반응형

검색 태그