본문 바로가기

Spring

AXBoot를 IntelliJ IDEA에서 처음 사용할 때 유의할 점 AXBoot Initializer로 생성한 프로젝트를 IntelliJ IDEA에서 열고 실행하려고 하면, QMenu, QCommonCode 등의 JPA 도메인 클래스 관련 오류가 발생하면서 빌드가 실패한다. 이럴 때는 "View > Tools Windows > Maven Projects" 메뉴를 이용해서 Maven 패널을 열고, Lifecycle 하위의 clean, package 골을 차례로 실행한다. 이 오류는 Querydsl 관련 클래스가 없어서 발생하는데, 위의 과정을 통해서 생성하는 것이다. EOF 더보기
Spring Data JPA - LazyInitializationException 개요 요즘 Spring Boot 저장소에 있는 Spring Data JPA 샘플 프로젝트를 살펴 보고 있습니다.테스트 코드를 작성하면서 하나하나 파악하고 있는데, OneToMany로 엮인 다른 엔티티의 목록을 가져오려고 하면 아래와 같은 오류가 발생합니다. org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: kr.co.javaworld.jpa.domain.Person.cars, could not initialize proxy - no Session at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitia.. 더보기
Spring Shell Command 구현 개요 HelloWorldCommands 클래스를 통해서 Spring Shell 커맨드 구현 방법을 살펴 보겠습니다. Marker interface HelloWorldCommands는 org.springframework.shell.core.CommandMarker 인터페이스를 구현하고 있습니다. @Component public class HelloWorldCommands implements CommandMarker { } CommandMarker는 마커 인터페이스라서 커맨드 구현체라는 것을 알려주기 위해서 implements 할 뿐입니다. 따라서 구현할 메소드는 없습니다. @Component annotation은 component-scan을 통해 bean으로 등록되라고 붙여 줬습니다. CLI Annotat.. 더보기
Spring Shell 소개 소개 스프링 프로그래밍 모델을 기반으로 손쉽게 커맨드라인 애플리케이션(interactive shell)을 만들 수 있도록 도와주는 프로젝트입니다. 홈페이지(GitHub) https://github.com/spring-projects/spring-shell 샘플 애플리케이션 Spring Shell은 샘플 애플리케이션을 제공합니다. HelloWorld 애플리케이션은 부트스트랩(Bootstrap)/커맨드(Command)/베너(Banner)/프롬프트(Prompt)의 기본 구현 방법을 보여줍니다. 샘플을 통해 Spring Shell을 이해하는게 효과적이기 때문에 이를 통해 Spring Shell 사용 방법을 하나하나 설명토록 하겠습니다. Clone 먼저 Spring Shell 프로젝트를 Clone합니다. ~$ g.. 더보기
Spring Tool Suite(STS)에 Subversion Plugin 설치 Spring Tool Suite(STS)는 간편하게 Subversion(SVN) 플러그인을 설치하는 방법을 제공합니다. 아래의 방법으로 Subversive 혹은 Subclipse를 설치합니다. 먼저 Dashboard를 엽니다. Dashboard가 열리면, Extensions 탭을 선택합니다. Find 필드에 Subversive/Subclipse를 입력하여 플러그인을 찾습니다(둘 중 하나만 설치하면 됩니다). 저는 Subversive를 찾았습니다. 검색 결과가 나오면 앞쪽의 체크박스를 선택합니다. Install 버튼을 눌러서 설치를 진행합니다. 이후 검증/재시작 등에 대한 경고가 나오면 모두 Yes를 선택하여 설치를 완료합니다. 더보기
Spring MVC의 CommonsMultipartResolver를 사용하여 업로드한 임시파일은 지워질까? Spring MVC는 Commons FileUpload 패키지를 이용한 파일 업로드를 지원한다. 아무 생각 없이 사용하고 있다가 문득 FileUpload를 Spring 없이 사용할 때는 FileCleanerCleanup 리스너를 web.xml에 등록해서 temporary 파일을 자동으로 삭제하게 한다는게 기억났다. 아차! 지금이라도 등록해 줘야하는건가? 하는 생각에 확인차 서버의 temporary 경로를 살펴봤다.그런데 이상하게도 파일 업로드 후에 남아 있었어야할 임시 파일이 하나도 없었다. CommonsMultipartResolver가 뭔가 알아서 지우는건가 해서 뒤져봐도 관련 코드는 없었다.이해가 안가서 좀 더 뒤지다가 결국 DispatcherServlet에서 삭제 코드를 찾았다. doDispatch.. 더보기