본문 바로가기
[Maven] Maven Build 시 test 건너뛰기 (test skip) Maven Build 시 test 건너뛰기 Maven Build (install) 시 Maven Test 이후에 Build를 하게 된다. 이때 jUnit 테스트 에서 Exception 발생 및 Assert not Equal 등으로 Test가 실패할 경우 Build 는 실패 (Fail) 하게 된다. jUnit Test 가 실패해도 Build 는 되게끔 Maven Test 단계를 건너뛰는 방법은 아래와 같다. 1. CMD 에서 빌드시 mvn install -DskipTests 2. IDE Run configurations 에서 빌드시 1. Goals 에 다음과 같이 옵션 부여 : install -DskipTests 2. Skip Tests 체크박스 체크 후 run 3. pom 수정 : surefire plu.. 2020. 5. 10.
[Spring Fw] inter-bean reference vs. Bean Lite Mode : @Configuration 어노테이션 없이 @Bean 사용 1. Inter-bean reference @Configuration 과 함께 @Bean 을 사용 하는 경우. cglib proxy 에 의해 생성된 proxy 객체를 사용. @Bean 은 하나만 생성된다. 일반적인 경우 위 방법을 사용한다. 2. Lite Mode @Configuration 없이 @Component 등의 annotation과 @Bean을 같이 사용. cglib proxy 에 의한 객체를 사용하지 않고 일반 메소드 처럼 동작하게 된다. @Bean 이 여러개 생성 될 수 있다. Lite Mode를 언제 사용하는지 모르겠다. 알아만 두자. 한글 설명 : https://multifrontgarden.tistory.com/253 공식 doc : https://docs.spring.io/spring.. 2020. 5. 9.
[Spring Fw] application context vs. servlet context application context 최상위 context 여러개의 servlet 에서 공통적으로 공유하여 사용할 수 있는 Bean 을 선언 Spring 에서 생성되는 Bean 에 대한 Ioc Container application context 에 정의된 bean 은 servlet context에 정의된 bean 을 사용할 수 없다 servlet context servlet 관련된 context url 관련 설정 bean 생성 (intercepter, @Controller) application context 를 부모 context 로 사용 application context와 servlet context에 같은 id 로 bean 등록된 경우 servlet context 의 bean을 사용한다. * 빈 .. 2020. 5. 7.
[Spring Batch+Quartz] 스프링 배치, 쿼츠 메타테이블 들여다보기 Spring Batch, Spring Quartz 메타테이블 들여다보기 Spring Batch, Spring Quartz 모두 InMemory 방식을 사용할 경우 Table 없이 사용가능하다. 하지만 Quartz Clustering 기능을 사용하는 경우 혹은 UI 로 배치(job) 및 스케쥴을 관리하는 경우 메타테이블 사용은 필수적이다. Quartz , Batch 메타테이블 중 의미있는(내가 알고 있는..) 테이블 정보를 기록해둔다. 1. Quartz 메타테이블 1) FIRED_TRIGGERS; 현재 실행된(fired) 스케쥴의 트리거정보(비동기 동작시 바로 실행완료 상태가 되어버리므로 해당 테이블은 스쳐지나감) 2) PAUSED_TRIGGER_GRPS; 3) LOCKS; 4) SIMPLE_TRIGGER.. 2020. 4. 21.
[Spring Batch+Quartz] 스프링 배치+쿼츠 설정 및 구현 Clustering 모드 사용 1. Quartz 와 Batch 1-1. Quartz - 언제 실행시킬지와 관련 - Scheduling 1-2. Batch - 무엇을 실행시킬지와 관련 - Batch job - 보통 배치를 짠다는 말은 Batch job 개발을 한다는 의미 2. Quartz와 Batch의 관계 및 함께 사용하는 이유 일괄처리(로직)을 batch job 으로, batch job 을 스케쥴링 하기 위해 quartz 를 사용 높은 Spring Version은 @Scheduled 어노테이션으로 Crontrigger와 같은 기능을 제공하여 Quartz 가 필요 없다곤 하나 Quartz 의 Clustering 기능, DB 값을 기준으로 동작 제어가 가능하다는 점에 Quartz를 함께 사용 3. Quartz Clustering + B.. 2020. 4. 20.
@Transactional Propagation (전파속성), Isolation (격리수준레벨) 그리고 synchronized 1. Transaction 설정방법 트랜잭션 설정 방법은 이곳을 참고. 2. Isolation SQL 의 Isolation level 과 동일하게 동작 (SQL 격리수준 속성에 대한 자세한 내용은 이곳을 참고) - READ_UNCOMMITED : commit 되지 않은 데이터를 읽는다 - READ_COMMITED : commit 된 데이터만 읽는다 - REPEATABLE_READ : 자신의 트랜잭션이 생성되기 이전의 트랜잭션(낮은 번호의 트랜잭션)의 커밋된 데이터만 읽는다 - SERIALIZABLE : LOCK 을 걸고 사용 - DEFAULT : 사용하는 DB 기본 설정을 따른다. (Oracle 은 READ_COMMITED, Mysql InnoDB 는 REPEATABLE_READ 가 Default) 3... 2020. 4. 17.
[Spring Quartz] Batch Job 중지 시키기 : JobOperator, Stop, StoppableTasklet 1. JobRepository, JobExplorer, JobOperation 의 역할 - JobRepository : meta-data 에 대한 CRUD - JobExplorer : meta-data 에 대한 read-only 기능 - JobOperation : stop, restart 등 job 에 대한 제어 2. jobOperator 의 stop(jobExecutionId) 메소드 - 실행중인 job 을 stop 시킨다. - Stop 은 graceful 하게 동작한다. (Stop이 즉시 이뤄지지 않으며 현재 실행중이던 step 은 끝까지 다 실행 된 후 job이 stop 된다) 3. jobOperator 의 stop(jobExecutionId) 메소드 들여다 보기 (spring-batch-core-.. 2020. 4. 14.
[Spring Fw] Bean 생명주기 : Init/Destroy 사용법 및 호출 순서 1. Servlet 생명주기 Init > Service(get/post) > Destory https://minwan1.github.io/2017/10/08/2017-10-08-Spring-Container,Servlet-Container/ https://javannspring.tistory.com/231 2. BeanFactory 와 ApplicationContext 구조 https://whiteship.tistory.com/518 BeanFactory 를 ListenableBeanFactory, HierachialBeanFactory가 구현 ListenableBeanFactory, HierachialBeanFactory를 ApplicationContext가 구현 XmlWebApplicationCont.. 2020. 3. 19.
@Autowired @Resource @Inject Bean 탐색 기준 @Autowired Type --> 이름 --> Qualifier --> fail @Resource 이름 --> Type --> Qualifier --> fail @Inject Type --> Qualifier --> 이름 --> fail https://engkimbs.tistory.com/682 2020. 2. 27.
redirect, forward 차이 및 redirect 시 attribute 전달 방법 [ redirect 시 attribute 전달하는방법 ] redirectAttributes.addFlashAttribute 사용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @RequestMapping(value="/save.do") public String save(HttpServletRequest request, RedirectAttributes redirectAttributes, paramVO vo) throws Exception { ... redirectAttributes.addFlashAttribute("param", param); return "redirect:/result.do"; } @RequestMapping(value="/result.do") public ModelA.. 2020. 1. 6.