Spring Core
-
spring에서 classpah 기반으로 resource를 접근할 때 classpath와 classpath*를 사용할 수 있다. classpath 현재 프로젝트에서 작성한 리소스만을 대상으로 한다. classpath* 현재 프로젝트에서 참조하고 있는 모든 jar 파일을 검색해서 리소스를 선택한다.
[spring]classpath vs classpath*spring에서 classpah 기반으로 resource를 접근할 때 classpath와 classpath*를 사용할 수 있다. classpath 현재 프로젝트에서 작성한 리소스만을 대상으로 한다. classpath* 현재 프로젝트에서 참조하고 있는 모든 jar 파일을 검색해서 리소스를 선택한다.
2022.12.03 -
어느덧 브라우저 시장을 과점하고 있는 크롬은 2020.02.04일 발표된 크롬 80 버전에 새로운 쿠키 정책을 적용했다. 이른바 SameSite라는 속성의 기본 값을 "None"에서 "Lax(느슨한)"로 변경한 것이다. 이는 CSRF(Cross-site request forgery: 사이트 간 요청 위조) 및 의도하지 않은 정보 유출에 대한 취약성에 대처하기 위한 것이다.이번 포스트에서는 SameSite 속성의 종류와 특징, 설정 방법에 대해 알아보자. SameSite 속성 SameSite 속성의 정의SameSite 속성은 HTTP Working Group이 2016에 발표한 RFC6265에 포함된 내용으로 쿠키를 자사 및 동일 사이트 컨텍스트로 제한해야 하는지 여부를 선언할 수 있다.여기서 자사란 브..
[cookie] SameSite 설정(Chrome 80 쿠키 이슈)어느덧 브라우저 시장을 과점하고 있는 크롬은 2020.02.04일 발표된 크롬 80 버전에 새로운 쿠키 정책을 적용했다. 이른바 SameSite라는 속성의 기본 값을 "None"에서 "Lax(느슨한)"로 변경한 것이다. 이는 CSRF(Cross-site request forgery: 사이트 간 요청 위조) 및 의도하지 않은 정보 유출에 대한 취약성에 대처하기 위한 것이다.이번 포스트에서는 SameSite 속성의 종류와 특징, 설정 방법에 대해 알아보자. SameSite 속성 SameSite 속성의 정의SameSite 속성은 HTTP Working Group이 2016에 발표한 RFC6265에 포함된 내용으로 쿠키를 자사 및 동일 사이트 컨텍스트로 제한해야 하는지 여부를 선언할 수 있다.여기서 자사란 브..
2022.04.26 -
SpringBoot에서 resources 경로에 정적 파일을 놓고 사용하는 경우가 왕왕 있다. 그런데 희안하게도 개발하는 과정에서는 잘 동작하는데 jar 파일로 배포하기만 하면 FileNotFoundException이 발생하는 희안한 일이 발생한다. 이번 포스트에서는 이유를 파악하고 그 대책을 알아보자. 기본 구성 파일의 배치 먼저 resources 폴더에는 dongcode.txt 파일이 배치되어있다. spring boot에서의 활용 다음으로 boot 에서 @Value를 이용해서 설정한 값을 org.springframework.core.io.Resource 타입으로 가져온다. @Value("classpath:/juso/dongcode.txt") private Resource fileResource; 다음..
[SpringBoot] jar로 배포된 파일에서 resources의 파일 접근 시 FileNotFoundException 발생 처리SpringBoot에서 resources 경로에 정적 파일을 놓고 사용하는 경우가 왕왕 있다. 그런데 희안하게도 개발하는 과정에서는 잘 동작하는데 jar 파일로 배포하기만 하면 FileNotFoundException이 발생하는 희안한 일이 발생한다. 이번 포스트에서는 이유를 파악하고 그 대책을 알아보자. 기본 구성 파일의 배치 먼저 resources 폴더에는 dongcode.txt 파일이 배치되어있다. spring boot에서의 활용 다음으로 boot 에서 @Value를 이용해서 설정한 값을 org.springframework.core.io.Resource 타입으로 가져온다. @Value("classpath:/juso/dongcode.txt") private Resource fileResource; 다음..
2022.03.21 -
자바에서 애플리케이션 작성을 위한 Spring Framework와 단위테스트를 위한 JUnit을 연동해서 사용하는 방법에 대해 살펴보자. 의존성 설정 테스트를 위해서는 junit과 spring-test에 대한 의존성 설정이 필요하다. junit junit 4.13.2 test org.springframework spring-test ${org.springframework-version} test 연동 처리를 위한 annotation 사용 junit의 @RunWith @RunWith는 JUnit이 동작할 때 내장된 runner가 아닌 사용자 지정의 runner와 동작 할 수 있게 지정해주는 녀석이다. 이 부분이 바로 spring framework와의 연동 부분이 된다. @RunWith(SpringRunne..
[spring]junit 과 spring legacy project 연동 시키기자바에서 애플리케이션 작성을 위한 Spring Framework와 단위테스트를 위한 JUnit을 연동해서 사용하는 방법에 대해 살펴보자. 의존성 설정 테스트를 위해서는 junit과 spring-test에 대한 의존성 설정이 필요하다. junit junit 4.13.2 test org.springframework spring-test ${org.springframework-version} test 연동 처리를 위한 annotation 사용 junit의 @RunWith @RunWith는 JUnit이 동작할 때 내장된 runner가 아닌 사용자 지정의 runner와 동작 할 수 있게 지정해주는 녀석이다. 이 부분이 바로 spring framework와의 연동 부분이 된다. @RunWith(SpringRunne..
2021.12.01 -
스프링에서는 이미 많은 부분에서 AOP들이 적용되어있다. 이번 포스트에서는 여러가지 예를 통해서 어떤 면에서 스프링의 AOP가 활용되는지 살펴보자. singleton의 비밀스프링은 빈을 관리할 때 특별히 scope 속성을 변경하지 않는다면 singleton으로 관리해준다. 사실 @Bean의 메서드를 호출하기만 하면 언제나 새로운 빈이 만들어지는데 어떻게 그런일이 가능할까?@SpringBootApplicationpublic class AopApplication { public static void main(String[] args) { SpringApplication.run(AopApplication.class, args); } @Bean // 메서드 호출 시 빈이 생성됨 ..
05. Spring 내부의 AOP들스프링에서는 이미 많은 부분에서 AOP들이 적용되어있다. 이번 포스트에서는 여러가지 예를 통해서 어떤 면에서 스프링의 AOP가 활용되는지 살펴보자. singleton의 비밀스프링은 빈을 관리할 때 특별히 scope 속성을 변경하지 않는다면 singleton으로 관리해준다. 사실 @Bean의 메서드를 호출하기만 하면 언제나 새로운 빈이 만들어지는데 어떻게 그런일이 가능할까?@SpringBootApplicationpublic class AopApplication { public static void main(String[] args) { SpringApplication.run(AopApplication.class, args); } @Bean // 메서드 호출 시 빈이 생성됨 ..
2021.10.29 -
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 -
advice는 실행되는 시점에 따라 여러가지 타입으로 작성할 수 있다. 이번 포스트에서는 다섯가지 advice의 타입에 대해 살펴보자. advice 타입advice가 동작하기 위해서는 어떤 시점에 advice를 실행할 것인가를 결정해야 한다. Spring에서는 다섯가지 annotation으로 이 시점을 설정할 수 있다.애너테이션설명@Before타겟 메서드 호출 전 advice 실행@AfterReturning타겟 메서드가 정상 종료(return) 후 advice 실행@AfterThrowing타겟 메서드에서 예외가 던져졌을 때(throws XXException) advice 실행@After타겟 메서드 성공 여부(return or throws XXException)와 무관하게 언제나 advice 실행@Arou..
04. advice의 타입advice는 실행되는 시점에 따라 여러가지 타입으로 작성할 수 있다. 이번 포스트에서는 다섯가지 advice의 타입에 대해 살펴보자. advice 타입advice가 동작하기 위해서는 어떤 시점에 advice를 실행할 것인가를 결정해야 한다. Spring에서는 다섯가지 annotation으로 이 시점을 설정할 수 있다.애너테이션설명@Before타겟 메서드 호출 전 advice 실행@AfterReturning타겟 메서드가 정상 종료(return) 후 advice 실행@AfterThrowing타겟 메서드에서 예외가 던져졌을 때(throws XXException) advice 실행@After타겟 메서드 성공 여부(return or throws XXException)와 무관하게 언제나 advice 실행@Arou..
2020.06.20