Spring Framework/Spring boot: 66개의 글
가정하나의 project에 의미가 다른 2개의 Event라는 @Entity가 필요하다.당연히 package 경로는 다르다.하나는 net.woniper.data.jpa.event1.Event (이하 event1)하나는 net.woniper.data.jpa.event2.Event (이하 event2)package만 다르며, 클래스 명은 같다.각각의 Event는 Repository가 존재한다.net.woniper.data.jpa.event1.EventRepository (이하 eventRepository1)net.woniper.data.jpa.event2.EventRepository (이하 eventRepository2) 예제 코드net.woniper.data.jpa.event1.Eventpackage net..
이 글은 Job이 어떻게 Step List를 실행하는지 코드를 보며 확인해 볼 것이다.SimpleJob.doExecute@Override protected void doExecute(JobExecution execution) throws JobInterruptedException, JobRestartException, StartLimitExceededException { StepExecution stepExecution = null; for (Step step : steps) { stepExecution = handleStep(step, execution); if (stepExecution.getStatus() != BatchStatus.COMPLETED) { // // Terminate the job ..
이번 글에선 기본 개념에 정리한 여러 클래스가 서로 어떤 의존성을 가지며, 어떻게 동작하는지 코드를 살펴볼 것이다. 모든 코드를 다 볼 수 없기에 이번 글은 Job이 어떻게 생성되고 실행되는지 살펴본다.Sample@Configuration public class SimpleConfiguration { @Autowired private JobBuilderFactory jobBuilderFactory; @Autowired private StepBuilderFactory stepBuilderFactory; @Bean public Job job() { return jobBuilderFactory.get("simple-job") .start(step()) .build(); } @Bean public Step st..
Spring Batch를 사용해본 개발자라면 이 포스팅은 볼 필요 없다. Spring Batch의 기본 개념 (레퍼런스 문서에서는 domain이라고 표현한..)을 내 나름대로 정리하는 글이다. 이 글은 Spring Batch가 무엇인지, 왜 사용하는지 설명하지 않는다.기본 개념 Job : Batch에서 실행 가능한 실행 단위.JobLauncher : Job을 실행하는 책임이 있다. JobRepository를 통해 Job, Step, Item* 등을 생성하고 조립.JobRepository : DB 또는 어딘가에 저장된 Job, Step 등을 조회(select) 또는 생성(insert), 수정(update).Step : Job은 1개 이상의 Step을 포함(1:N)할 수 있고, 하나의 큰 실행 단위가 Job..
발표자료 Booting Spring Data RESTSpring Data REST 예제Spring Data REST #1 IntroductionSpring Data REST #2 동작 원리Spring Data REST #3 내부 동작 정말 Repository Interface로만 API가 동작할까? 당연히 Repository Interface만 있다고 해서 API가 동작하는 건 아니다. 우리가 Spring MVC를 사용해서 Controller를 만들어서 API를 만들듯이, Spring Data REST에는 이미 만들어진 Controller가 존재한다. 차이점이 있다면, 기존에 만들던 Controller와는 조금 다른 Spring Data REST만의 Controller를 만든다.@Reposit..
발표자료 Booting Spring Data RESTSpring Data REST 예제Spring Data REST #1 IntroductionSpring Data REST #2 동작 원리Spring Data REST #3 내부 동작 Introduction에서 Spring Data REST에 대한 간단한 소개와 사용방법을 알아봤다. Spring Data에서 제공하는 Repository interface 선언만으로 REST API가 만들어졌다.어떻게 Repository 선언만으로 REST API가 제공될까? 위 그림은 발표 장표 중 하나다. CrudRepository에 선언된 메소드가 곧 REST API로 지원되는 것이다.@RepositoryRestResource public interface ..
발표자료 Booting Spring Data RESTSpring Data REST 예제Spring Data REST #1 IntroductionSpring Data REST #2 동작 원리Spring Data REST #3 내부 동작 Spring Camp 2017에서 Spring Data REST를 소개하는 발표를 했는데, 45분이라는 시간으로 Spring Data REST(이하 Data REST)를 모두 전달하기에는 짧은 시간이다. 그래서 블로그를 통해 좀 더 많은 내용을 전달하려고 한다.IntroductionSpring Data REST 레퍼런스 문서에서 REST API는 애플리케이션 통합에서 중요한 수단이고, Spring MVC를 통해 쉽게 만들 수 있지만, 간단한 REST API를 만들..
Spring Tips: The Spring Framework *Utils Classes 를 보고 정리하면 좋겠다고 생각했다.전체 예제DemoClass@Data @Slf4j @AllArgsConstructor @NoArgsConstructor public class DemoClass { private List list = new ArrayList(); @PostConstruct public void begin() { log.info("begin"); } }org.springframework.util.Assert@Test public void assertIsNull() throws Exception { demoClass.setList(null); Assert.isNull(demoClass.getList(),..
Bean Scope를 좀 살펴보다가 아래와 같은 테스트를 돌려보았다.@Configuration public class BeanScopeConfig { @Bean public AccountService accountService() { AccountService accountService = new AccountService(); accountService.setAccountRepository(accountRepository()); return accountService; } @Bean @Scope(scopeName = "prototype") public AccountRepository accountRepository() { return new AccountRepository(); } } public cl..
앞서 bean 등록(registry)과 getBean 메소드 호출 과정을 살펴보았다. 간단하게 다시 정리해보자면bean 등록 : 메타데이터를 통해 BeanDefinition을 Map에 저장한다.getBean처음 호출 GenericBeanDefinition을 RootBeanDefinition으로 재 정의 후 Map에 저장bean instance 생성 후 Map에 저장 후 반환2번 이상 호출Map에 bean instance 꺼내와 반환 예제로 설명한 AnnotationConfigApplicationContext는 DefaultListableBeanFactory를 통해 대부분에 기능을 위임하고 있는 것을 확인했다. 그렇다면 BeanFactory와 ApplicationContext는 무엇일까? 이번 글에서 알아..