웹 프로그래밍/Spring (10) 썸네일형 리스트형 [Spring] Bean Scope spring bean scopesingleton (default) : Spring Container 시작과 종료까지 유지되는 가장 넓은 범위의 스코프prototype : Spring Container가 프로토타입의 빈 생성. 의존관계 주입까지만 관여하고 더이상 관리하지 않는 짧은 범위의 스코프webrequest : 고객의 웹 요청이 들어오고 나갈 때까지 유지되는 스코프session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프websocket : 웹 소켓과 동일한 생명 주기를 가지는 스코프 Scope 설정ComponentScan 자동 등록, @Bean을 이용한 수동 등록 모두 Scope 지정 시 아래와 같이 작성하면 됩니다.. [Spring] Spring Boot Validation annotation 정리 @RequestBody 옆(오른쪽, 왼쪽 상관 없음)에 @Valid 어노테이션을 쓴 뒤에 해당 DTO의 필드 위에 유효성 검증을 원하는 대상에 부합하는 annotation을 써줍니다. 사용법 자세한 사용법은 아래 글을 참고해주세요~ https://yundevnote.tistory.com/64 [Spring] Spring Boot에서의 validation check Validation 올바르지 않은 데이터를 걸러내고 보안을 유지하기 위해 데이터 검증은 여러 계층에 걸쳐서 적용됩니다. Client의 데이터는 조작이 쉬울 뿐더러 모든 데이터가 정상적인 방식으로 들어오 yundevnote.tistory.com @Getter @RequiredArgsConstructor public class UserRequest.. [Spring] Spring Boot에서의 validation check Validation 올바르지 않은 데이터를 걸러내고 보안을 유지하기 위해 데이터 검증은 여러 계층에 걸쳐서 적용됩니다. Client의 데이터는 조작이 쉬울 뿐더러 모든 데이터가 정상적인 방식으로 들어오는 것은 아니기 때문에 Client Side 뿐만 아니라 Server Side에서도 데이터 유효성 검사를 해야 할 필요가 있습니다. 스프링 부트 프로젝트에서는 @Validated를 이용해 유효성을 검증할 수 있습니다. @Valid, @Validated 차이 @Valid는 Java에서 지원해주는 어노테이션이고, @Validated는 Spring에서 지원해주는 어노테이션입니다. @Validated는 @Valid의 기능을 포함하고, 유효성 검사할 그룹을 지정할 수 있는 기능을 추가로 제공합니다. 스프링에서는 애노.. [Spring] DTO의 @Builder, @RequestBody와 생성자 RestAPI를 생성 후 API 테스트를 하던 중 몇 가지 사실을 알게 되어 같은 문제로 어려움을 겪고 있는 분들께 도움이 되고자 글을 작성하였습니다. 잘못된 내용이 있다면 가감 없이 피드백 주시길 바랍니다 🙇♀️ 아래의 예제는 임시로 만든 DTO, Controller이니 가볍게 보고 넘어가시길 바랍니다. 오늘 포스트의 핵심은 Controller가 Client로부터 받은 request body를 DTO로 매핑시키는 방법과 @Builder 어노테이션 사용 시 주의할 점이니 이를 떠올리며 읽어주시면 좋을 것 같습니다~ 우선 모든 클라이언트 요청을 주고받을 때 사용하는 DTO 클래스를 각각 역할 별로 나누어서 작성하였습니다. 아래는 로드 밸런서 생성 시 @RequestBody로 넘어올 객체를 정의한 클래스 .. [Spring] Spring Validator BindingReuslt/Errors 사용 API를 개발하면서 request body로 넘어온 도메인 객체 정보가 유효한 정보인지에 대한 validation check하는 로직을 개발하게 되었다. validation check를 하기 위해 Spring Framework Validator API를 사용하였다. 아래와 같이 API를 통해 요청을 할 경우, 넘어온 파라미터 정보가 유효 한지에 대한 유효성 검사를 했다. (회사 코드를 첨부할 수 없어 임의로 작성한 예시이다..) @RequestMapping(value = "/{path}/user", method = RequestMethod.POST) @ResponseStatus(value = HttpStatus.ACCEPTED) public UserInfo createUser(@PathVariable S.. [Spring Security] #2 Spring Security 설정 SecurtyConfig 설정 1 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests() .antMatchers("/user/**").authenticated() .antMatchers("/manager/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')") .antMatchers("/admin/**").acc.. [Spring Security] #1 Spring Security 시작하기 사용 도구 MariaDB Docker Spring Boot Spring Security Datatbase user 생성 create user 'security'@'%' identified by 'security'; grant all privileges on *.* to 'security'@'%'; create database security; use security; MariaDB와 Docker, Spring Boot 프로젝트 연동은 아래 포스팅에서 확인 할 수 있습니다. https://yundevnote.tistory.com/16 [Docker] Docker와 MariaDB 연동 MariaDB연동(docker) 앞에서 만든 spring boot 프로젝트와 JPA 연동 Database는 Mariadb 사.. [Spring Security] Spring Security란? Spring Security 인증, 인가를 지원하고 주요 공격으로부터 어플리케이션을 보호해주는 프레임워크 스프링 기반의 어플리케이션 보안을 담당하는 프레임워크 서블릿의 여러 종류의 필터와 인터셉터를 이용해서 처리된다. 필터 : 서블릿에서 말하는 단순한 필터 의미 인터셉터 : 스프링에서 필터와 유사한 역할 필터와 인터셉터는 서블릿이나 컨트롤러의 접근에 관여한다. 필터는 스프링과 무관한 서블릿 자원 인터셉터는 스프링의 빈으로 관리되면서 스프링의 컨텍스트 내에 속한다 스프링 시큐리티를 이용하게 되면 인터셉터와 필터를 이용하면서 별도의 컨텍스트를 생성해 처리 인증과 권한 부여(Authentication, Authorization) 인증 : 사용자에 대한 검증. 자신을 증명하는 것 권한 부여 : 인증을 기반으로 .. 이전 1 2 다음