Spring Core/자질구래
-
이번 포스트에서는 레거시 스프링 프로젝트를 구성하는 절차를 살펴보자.이 페이지의 내용은 스프링 부트 애플리케이션의 구성을 연습하기 위한 것으로 비지니스 로직 처리는 적절치 않습니다. 기본 프로젝트 구성 maven project 구성아키타입을 생략한 새로운 Maven Project를 생성한다.group id(소속사 domain), artifact id(project 이름)을 기입하고 web 서비스를 위해 packaging을 war로 설정한다. pom.xml에 JDK 설정 및 필요한 의존성 설정다음과 같이 pom.xml 파일을 수정해서 JDK와 필요한 의존성을 설정한다. 4.0.0 com.doding legacyproj 0.0.1-SNAPSHOT war 17 6.1.13 org.spri..
레거시 스프링 프로젝트 작성 절차이번 포스트에서는 레거시 스프링 프로젝트를 구성하는 절차를 살펴보자.이 페이지의 내용은 스프링 부트 애플리케이션의 구성을 연습하기 위한 것으로 비지니스 로직 처리는 적절치 않습니다. 기본 프로젝트 구성 maven project 구성아키타입을 생략한 새로운 Maven Project를 생성한다.group id(소속사 domain), artifact id(project 이름)을 기입하고 web 서비스를 위해 packaging을 war로 설정한다. pom.xml에 JDK 설정 및 필요한 의존성 설정다음과 같이 pom.xml 파일을 수정해서 JDK와 필요한 의존성을 설정한다. 4.0.0 com.doding legacyproj 0.0.1-SNAPSHOT war 17 6.1.13 org.spri..
2024.10.25 -
이번 포스트에서는 Spring Legacy Project를 SpringBoot로 변경하는 과정을 살펴보자. 기본 설정 빈 스켄과 자동 설정 SpringBoot를 하면서 처음 살펴볼 녀석은 당연히 main 메서드가 작성된 @SpringBootApplication이다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(ty..
Spring Legacy To SpringBoot이번 포스트에서는 Spring Legacy Project를 SpringBoot로 변경하는 과정을 살펴보자. 기본 설정 빈 스켄과 자동 설정 SpringBoot를 하면서 처음 살펴볼 녀석은 당연히 main 메서드가 작성된 @SpringBootApplication이다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(ty..
2023.10.30 -
평소에 궁금했었는데 찾아보지 못한 내용이 있었는데 바로 Legacy Spring에서 DispatcherServlet의 url mapping이 왜 "/*"가 아니라 "/"일까이다. DispatcherServlet의 urlmapping url mapping 방식 전통적으로 web.xml의 URL mapping에서 wildcard은 크게 3가지 형태로 사용된다. 형태 의미 /* 경로 기반의 매핑 ex) /abc/* -> /abc/ 아래의 모든 요청, : /abc/def, /abc , /abc.do 등 사용 가능 *.ext 확장자 기반 매핑으로 경로에 상관 없이 확장자가 같은 모든 요청 ex)*.do -> 확장자가 do인 모든 요청: /abc.do, /abc/def/ghi.do / 어떤 URL 매핑에도 연결되지..
[spring] DispatcherServlet의 url은 왜 "/*"가 아니고 "/" 일까?평소에 궁금했었는데 찾아보지 못한 내용이 있었는데 바로 Legacy Spring에서 DispatcherServlet의 url mapping이 왜 "/*"가 아니라 "/"일까이다. DispatcherServlet의 urlmapping url mapping 방식 전통적으로 web.xml의 URL mapping에서 wildcard은 크게 3가지 형태로 사용된다. 형태 의미 /* 경로 기반의 매핑 ex) /abc/* -> /abc/ 아래의 모든 요청, : /abc/def, /abc , /abc.do 등 사용 가능 *.ext 확장자 기반 매핑으로 경로에 상관 없이 확장자가 같은 모든 요청 ex)*.do -> 확장자가 do인 모든 요청: /abc.do, /abc/def/ghi.do / 어떤 URL 매핑에도 연결되지..
2023.04.19 -
Spring을 이용해서 샘플 프로젝트를 만들 때 매번 DB를 초기화하는게 상당히 귀찮은데 이런 경우 초기화 스크립트를 이용하면 아주 쉽게 문제를 해결할 수 있다. schema.sql과 data.sql 초기화 파일 준비 먼저 두 개의 초기화 파일을 resoures/init_data 경로에 위치시키자. 첫번 째 초기화 파일은 db의 구조를 담당하는 schema 파일이다. drop table todo if exists ; create table todo( id number primary key auto_increment, content varchar(100) not null, done char(1) default 'F' ); 다음은 초기 데이터 파일을 설정하는 data.sql이다. insert into tod..
[spring]SQL script를 활용한 DB 초기화Spring을 이용해서 샘플 프로젝트를 만들 때 매번 DB를 초기화하는게 상당히 귀찮은데 이런 경우 초기화 스크립트를 이용하면 아주 쉽게 문제를 해결할 수 있다. schema.sql과 data.sql 초기화 파일 준비 먼저 두 개의 초기화 파일을 resoures/init_data 경로에 위치시키자. 첫번 째 초기화 파일은 db의 구조를 담당하는 schema 파일이다. drop table todo if exists ; create table todo( id number primary key auto_increment, content varchar(100) not null, done char(1) default 'F' ); 다음은 초기 데이터 파일을 설정하는 data.sql이다. insert into tod..
2022.12.03 -
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