본문 바로가기

728x90
반응형

Spring

(43)
HttpSession 사용 방법 사용 이유 HttpSession은 둘 이상의 Page Request에서 사용자 식별 혹은 사용자 정보를 저장하기 위한 방법을 제공함. Spring Web MVC에서 HttpSession을 주입할 때 내부적으로 Servlet Container 에게 Session을 요청함. @GetMapping("/setSession") public String setSession(HttpServletRequest request) { HttpSession httpSession = request.getSession(true); httpSession.setAttribute("name", "hi"); httpSession.setAttribute("introduce", "myname is.."); return "setSession"; } @..
@CookieValue 스프링 쿠키 사용법 쿠키란 ? 클라이언트 로컬에 저장되는 key, value가 들어있는 작은 데이터 파일 서버에서 HttpResponse Header에 Set-Cookie 속성을 이용해서 클라이언트에 쿠키를 제공 이름, 값, 만료날짜, 경로 정보 등이 들어있음 client에서 서버에 정보를 요청할 때 참조한다. HTTP 프로토콜의 특징이자 약점 보완을 위해 사용 비연결지향(Connectionless) HTTP는 클라이언트가 Request를 서버에 보내고 서버가 클라이언트로 Response하면 응답을 끊는 특성이 있음 상태없음(Stateless) 커넥션을 끊는 순간 클라이언트와 서버 통신이 끝나며 상태정보는 유지하지 않는 특성 쿠키 세팅 @GetMapping(value = "/setCookie") public String s..
Spring Boot security Oauth2 로그인 연동 (구글/카카오) Spring security 스프링 시큐리티는 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크다. Spring 기반 애플리케이션을 보호하기 위한 사실상의 표준이다. 인증과 권한 부여를 제공하는데 중점을 둔 프레임워크. Spring Security Oauth 프로젝트는 더이상 제공되지 않고 Spring Security에서 포괄적인 Oauth2 지원을 제공한다. Google Oauth2 연동 SetUp 1. 프로젝트생성 구글 개발자 콘솔 API Project를 선택 🔽 🔽 2. API 및 서비스 > Oauth동의화면 🔽 Oauth동의 화면에서 앱이름과 사용자지원이메일, 개발자 연락처 정보를 입력한다. 🔽 범위에서 범위 추가 또는 삭제를 통해서 userInfo.email, profile, openid를 ..
Spring Boot @DataJpaTest 사용방법 @DataJpaTest JPA 관련 테스트 설정을 로드한다. 데이터소스 설정이 정상인지 JPA를 사용해서 생성, 수정, 삭제 등의 테스트를 할 수 있다. 실제 데이터베이스를 사용하지 않고 내장형을 사용해서 테스트할 수 있기 때문에 실제DB에 영향을 주지 않는다. 기본적으로 임베디드 데이터베이스를 사용한다. // JPA테스트가 끝날때마다 자동으로 테스트에 사용한 데이터 롤백 @DataJpaTest // Replace.Any를 사용하면 내장된 데이터 소스를 사용하고 // Replace.NONE을 설정하면 ActiveProfiles에 설정한 환경값에 따라 적용된다. // spring.test.database.replace: NONE 도 가능 @AutoConfigureTestDatabase(replace = A..
Spring Boot @EnableAutoConfiguration @SpringBootApplication @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 스프링부트에서 시작점은 @SpringBootApplicaion 어노테이션이다. run을 실행하면 서버를 시작할 수 있다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters..
Spring Boot 외부 설정 @Value, @ConfigurationProperties 스프링 부트 프로퍼티 파일은 설정이나 기타 정적인 값을 키값 형식으로 관리한다. 이것을 이용하면 복잡한 XML설정을 하나의 파일로 관리할 수 있다. YAML 파일을 이용하면 깊이에 따라 관계를 구분 짓기 때문에 List, Set, Map 등 다양한 바인딩형 매핑이 가능하다. 매핑 방식 중 유용하게 사용되는 @Value와 @ConfigurationProperties를 비교해본다. 유연한 바인딩: 프로퍼티 값을 객체에 바인딩할 때 Camel표기법으로 선언하고 프로퍼티 키는 카멜, 케밥 등 다양한 표기법으로 선언해서 바인딩할 수 있다. 메타데이터 지원: 프로퍼티 키에 대한 정보를 메타데이터 파일로 제공한다. 이름, 타입, 디폴트값 등 힌트가 되는 정보를 얻을 수 있다. SpEL(Spring Expression..
Spring Boot 멀티 모듈 프로젝트 관리 Gradle을 이용한 멀티 모듈 프로젝트 관리 방법을 소개한다. 사용하는 이유는 프로젝트가 커질 수록 공통으로 사용하는 서버가 많아지는데 (혹은 클래스) 그 클래스들을 전부 복사&붙여넣기를 할 수 없다. 수정이 필요한 경우 전부 수정을 해야하고 실수의 여지가 많다. 하나의 공통 프로젝트를 둔 다음 해당 프로젝트에서 가져다 쓸 수 있도록 할 때 사용한다. 프로젝트 구조 multi-module-root 를 두고 하위에 domain과 sub-web을 두었다. 최상위 multi-module-root를 만든 후 new -> module -> gradle -> java 로 만들면 된다. settings.gradle rootProject.name = 'multi-module-root' include 'sub-web'..
Spring Boot2 Swagger 사용 Gradle 설정 추가 // swagger implementation 'io.springfox:springfox-swagger2:3.0.0' implementation 'io.springfox:springfox-swagger-ui:2.9.2' SwaggerConfig.java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.ant("/order")) .buil..

728x90
반응형