Spring Core/자질구래
-
SpringBoot에서 JUnit 4.x 사용하기 문제 상황 그동안 SpringBoot를 쓸때는 Boot로 시작하고 SpringLegacy를 사용할 때는 legacy만 써서 별로 신경쓰지 않았는데 이번에 새롭게 워크샵을 정리하면서 legacy에서 boot로 migration 하는 부분을 만들다 보니 문제가 발생했다. spring legacy의 기본 template에는 junit이 4.12로 되어있다. 큰 문제 없겠다 싶어 버전만 4.13.1으로 변경 후 사용했다. 그런데 spring boot에서는 4.x가 제거되고 5.x가 기본으로 추가되었다. 따라서 기존의 테스트 코드는 오류를 발생시킨다. 동거시키기 spring boot의 pom.xml에서 dependency hierachy를 살펴보면 junit-ju..
SpringBoot에서 Junit4.x 사용하기SpringBoot에서 JUnit 4.x 사용하기 문제 상황 그동안 SpringBoot를 쓸때는 Boot로 시작하고 SpringLegacy를 사용할 때는 legacy만 써서 별로 신경쓰지 않았는데 이번에 새롭게 워크샵을 정리하면서 legacy에서 boot로 migration 하는 부분을 만들다 보니 문제가 발생했다. spring legacy의 기본 template에는 junit이 4.12로 되어있다. 큰 문제 없겠다 싶어 버전만 4.13.1으로 변경 후 사용했다. 그런데 spring boot에서는 4.x가 제거되고 5.x가 기본으로 추가되었다. 따라서 기존의 테스트 코드는 오류를 발생시킨다. 동거시키기 spring boot의 pom.xml에서 dependency hierachy를 살펴보면 junit-ju..
2020.12.25 -
Spring Security 기본 로그인 처리 Spring Boot Securityspring-boot-starter-security를 pom.xml에 추가하면 SecurityAutoConfiguration이 동작해서 별도의 설정을 하지 않아도 웹 리소스를 사용하기 위해서는 로그인 처리가 필요하다. @SpringBootApplication에 있는 @EnableAutoConfiguration에 의해 Security에 대한 설정이 자동으로 이뤄지기 때문이다. 아직 본격적으로 security 를 처리할 단계가 아니라면 다음과 같이 처리할 수 있다. username, password 지정 application.properties에 다음과 같이 사용자 계정 정보를 추가해준다. spring.security.user..
Spring Security 기본 로그인 처리Spring Security 기본 로그인 처리 Spring Boot Securityspring-boot-starter-security를 pom.xml에 추가하면 SecurityAutoConfiguration이 동작해서 별도의 설정을 하지 않아도 웹 리소스를 사용하기 위해서는 로그인 처리가 필요하다. @SpringBootApplication에 있는 @EnableAutoConfiguration에 의해 Security에 대한 설정이 자동으로 이뤄지기 때문이다. 아직 본격적으로 security 를 처리할 단계가 아니라면 다음과 같이 처리할 수 있다. username, password 지정 application.properties에 다음과 같이 사용자 계정 정보를 추가해준다. spring.security.user..
2020.06.21 -
이번 포스팅에서는 Legacy 기반의 스프링 프로젝트 생성에 대해서 다룬다. Legacy의 사전적 의미는 "유산" 정도 되는데 어떻게 보면 유구한 역사를 띄고 있다고 해석할 수 있으나 프로그래밍 영역에서는 많은 경우 "원래 부터 있던 좀 구닥다리의..." 라는 뉘앙스를 많이 풍긴다. 왜 우리는 구시대의 유물인 Legacy를 하려고 드는가? 처음에는 STS(Spring Tool Suite)를 이용해서 프로젝트를 만들 때 당연히 Legacy라는 단어를 사용하지 않았다. 그런데 새로운 개발 방식인 Boot를 밀기 위해서 노골적으로 이전 개발 방식에 대해 Legacy라는 모멸적인 단어를 부여하며 더 이상 사용하지 않기를 권장하고 있다. 심지어 최근 툴인 STS 4.X 이상 부터는 아예 Legacy 프로젝트 생성..
Hello Legacy Spring이번 포스팅에서는 Legacy 기반의 스프링 프로젝트 생성에 대해서 다룬다. Legacy의 사전적 의미는 "유산" 정도 되는데 어떻게 보면 유구한 역사를 띄고 있다고 해석할 수 있으나 프로그래밍 영역에서는 많은 경우 "원래 부터 있던 좀 구닥다리의..." 라는 뉘앙스를 많이 풍긴다. 왜 우리는 구시대의 유물인 Legacy를 하려고 드는가? 처음에는 STS(Spring Tool Suite)를 이용해서 프로젝트를 만들 때 당연히 Legacy라는 단어를 사용하지 않았다. 그런데 새로운 개발 방식인 Boot를 밀기 위해서 노골적으로 이전 개발 방식에 대해 Legacy라는 모멸적인 단어를 부여하며 더 이상 사용하지 않기를 권장하고 있다. 심지어 최근 툴인 STS 4.X 이상 부터는 아예 Legacy 프로젝트 생성..
2020.05.15 -
gmail을 이용해 smtp를 이용하려는 경우 아래와 같이 코드를 작성할 수 있다. @Bean public JavaMailSenderImpl mailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("smtp.gmail.com"); sender.setPort(587); sender.setUsername("사용자 이메일"); // gmail 로그인 아이디 sender.setPassword("사용자 암호"); // gmail 로그인 암호 sender.setDefaultEncoding("utf-8"); Properties javaMailProperties = new Properties(); javaMailPropert..
2단계 인증 상태에서 smtp를 이용한 gmail 발송gmail을 이용해 smtp를 이용하려는 경우 아래와 같이 코드를 작성할 수 있다. @Bean public JavaMailSenderImpl mailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("smtp.gmail.com"); sender.setPort(587); sender.setUsername("사용자 이메일"); // gmail 로그인 아이디 sender.setPassword("사용자 암호"); // gmail 로그인 암호 sender.setDefaultEncoding("utf-8"); Properties javaMailProperties = new Properties(); javaMailPropert..
2019.07.16 -
오류 메시지: Archive for required library: '사용자별_메이븐_경로/org/springframework/spring-context/5.1.7.RELEASE/spring-context-5.1.7.RELEASE.jar' in project 'temp' cannot be read or is not a valid ZIP file 원인: 스프링은 Maven을 통해서 필요한 라이브러리의 의존성을 파악한다. 그런데 네트워크 상황이 좋지 않은 상태에서 라이브러리를 다운받다 보면 라이라이브러리가 깨지는 현상이 종종 발생한다. 특히 무선랜 환경에서 그렇다. 대책: 이 경우는 이미 잘못 다운로드된 파일을 삭제하고 다시 받는 수 밖에 없다. 사용자별_메이븐_경로(기본은 c:\users\사용자명\.m2\..
[오류처리]cannot be read or is not a valid ZIP file오류 메시지: Archive for required library: '사용자별_메이븐_경로/org/springframework/spring-context/5.1.7.RELEASE/spring-context-5.1.7.RELEASE.jar' in project 'temp' cannot be read or is not a valid ZIP file 원인: 스프링은 Maven을 통해서 필요한 라이브러리의 의존성을 파악한다. 그런데 네트워크 상황이 좋지 않은 상태에서 라이브러리를 다운받다 보면 라이라이브러리가 깨지는 현상이 종종 발생한다. 특히 무선랜 환경에서 그렇다. 대책: 이 경우는 이미 잘못 다운로드된 파일을 삭제하고 다시 받는 수 밖에 없다. 사용자별_메이븐_경로(기본은 c:\users\사용자명\.m2\..
2019.05.11 -
path variable이 email 주소로 끝날 경우 스프링은 '.'뒤를 확장자로 인식해서 제외시킨다. 즉 user/abc@def.com 로 데이터가 오면 user/abc@def만 남는다. 이를 방지하기 위해서 path variable에 아래와 같이 설정한다. @GetMapping(value="/session/userinfo/{userId:.+}" ) public Map getUser(@PathVariable String userId) { logger.trace("getUser: {}", userId); } 하지만 일부 이메일 주소(.com 등)은 여전히 아래의 오류메시지와 함께 406 오류가 발생한다. org.springframework.web.servlet.mvc.support.DefaultHand..
path variable과 email 전송path variable이 email 주소로 끝날 경우 스프링은 '.'뒤를 확장자로 인식해서 제외시킨다. 즉 user/abc@def.com 로 데이터가 오면 user/abc@def만 남는다. 이를 방지하기 위해서 path variable에 아래와 같이 설정한다. @GetMapping(value="/session/userinfo/{userId:.+}" ) public Map getUser(@PathVariable String userId) { logger.trace("getUser: {}", userId); } 하지만 일부 이메일 주소(.com 등)은 여전히 아래의 오류메시지와 함께 406 오류가 발생한다. org.springframework.web.servlet.mvc.support.DefaultHand..
2019.04.18