GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the Spring 25

사용자의 요청DTO => @Validated 검사

[ Validation ] : 사용자의 요청 입력 값이 요구되는 조건에 맞는지 검사 - 사용자 입력값을 받는 requestDTO 에서 validate 해줘야 합니다. ( responseDTO (X) / entity (X) ) - 클라이언트 단에서도 validate 를 하겠지만 서버로 바로 접근하는 '공격' 을 막지 못하므로 => 1.클라이언트 2.서버 3.DB 각 단에서 validate 를 해주어야 합니다. [ 서버에서 validation ] 1. validation 라이브러리 설치 spring => jakarta bean validation api boot => spring boot starter validation 2. requestDTO 각 Column 에 필요한 validation 어노테이션 사용..

Back to the Spring 2023.01.18

JPA Paging 처리 (Page, Pageable)

JpaRepository 를 상속해서 사용할 수 있는 메소드 중 findAll() 메소드는 Page findAll(Pageable pageable); 위와 같이 Page 처리에 대한 정보를 담고있는 Pageable 객체를 매개변수로 받아서, 목표로 하는 T 객체를 페이징처리하여 Page 객체타입으로 받아내는 기능을 제공합니다. Pageable 는 Pageable pageable = PageRequest.of( pageRequestDTO.getPage() - 1, pageRequestDTO.getSizePerPage(), Sort.Direction.DESC, "createdDate" ); PageRequest (자식) 객체를 이용해서, PageRequest.of( 1.현재페이지, 2.페이지당 데이터개수, ..

Back to the Spring 2023.01.18

[ Spring ] RestAPI 만능 객체 ResponseEntity<?>

@RestController 에서 JSON 타입으로 객체를 return 할 때, 원래는 { A : a, B : b } 와 같은 JSON 형태로 return 값을 보내줘야 하지만 객체 자체를 return 해도 위와 같은 JSON 형태로 변환해서 보내주는게 jackson 라이브러리 이죠. 예를들어, 게시판 DTO 객체인 BoardDTO 를 return 하면 VIEW 단에서는 AJAX 등을 통해 res.title / res.contents 와 같은 형식으로 JSON 값을 가져다 쓸 수 있습니다. 하지만 이렇게 객체 자체만을 return 해주는 것에서 더 나아가서 [ 객체자체 + 응답 상태 코드 + header 내용 ] 추가적인 정보까지 함께 응답해 줄 수 있게 해주는 만능 객체 그릇이 바로 ResponseEn..

Back to the Spring 2023.01.15

[ Spring ] 프레임워크, DI, Entity / DTO

[ Spring Framewrok ] - 스프링에서는 MVC 패턴의 프레임워크를 정해두었습니다. 각자의 역할을 가지는 객체를 정해두었고, 이런 규칙을 잘 따르면 편리한 기능들을 제공해 줍니다. @Controller 는 DB랑 클라 요청처리 받아서 연결해주는 역할, @Service 단에서는 데이터 선처리 후처리 등 작업, @DAO 는 데이터 관리 ... 정해놓은 규칙 정도이지, 간단한 api라면 service 단 없이, Controller 단에서 데이터처리까지 해줄 수 있습니다. 하지만 규모가 조금만 커지면 Controller 단에서는 맵핑해주는 역할과 데이터 처리하는 역할이 뒤섞이고 다른 개발자가 봤을 때 가독성이 떨어지게 되겠죠. 폴더별로 파일을 정리하는 것 처럼 프레임워크가 정해놓은 규칙에 따라서 객..

Back to the Spring 2023.01.15

[Spring Security] Authentication Failure Handler 적용

Spring Security 에서는 로그인 성공 / 실패시, SecurityConfig 에서 특정 URL 로 리다이렉트 시키거나 Handler 를 활용해 후처리를 해줄 수 있습니다. [ SecurityConfig ] .defaultSuccessUrl("/allboard") @Autowired AuthenticationFailureHandler authenticationFailureHandler; .failureHandler(authenticationFailureHandler) Handler 를 이용하고자 하면 (1) AuthenticationFailureHandler 인터페이스를 implements 해서 사용하거나 (2) SimpleUrlAuthenticationFailureHandler 를 extend..

Back to the Spring 2022.12.24

[ Spring Security ] OAuth2 구글 / 네이버 로그인

너무나 다양하고 많은 웹 / 앱 서비스들이 출시되고 있는 추세에 매번 새로운 Application 에, 새로운 정보로 가입하는 건 요즘은 꽤나 기피됩니다. OAuth2 를 활용하면 대중적인 사이트들의 로그인 API 를 활용해서 나의 새로운 Application에 손쉽게 클릭 한 두번으로 가입할 수 있게 됩니다. 최근 출시하는 Application 들은 이러한 편의성을 강점으로 살리고자 로그인 방법만 10가지가 넘게 제공하기도 하죠.. 대표적인 사이트 구글, 네이버 로그인을 OAuth 를 활용해 적용하는 법을 정리해 보았습니다. 1. 라이브러리 설치 [ Build Gradle ] # Spring Scurity implementation 'org.springframework.boot:spring-boot-s..

Back to the Spring 2022.12.23

[Spring Security] SecurityConfig, UserDetailsService, BCrypt, CSRF

1. Spring Security : Application 의 보안( Authentication, Authroization )을 담당하는 스프링 하위 프레임워크 - Authentication ( 인증 ) : 해당 사용자의 로그인 정보가 일치하는 지 확인 ( ID / PW ) - Authorization ( 권한 ) : '인증' 된 사용자가 요청한 페이지에 접근 가능한지 권한을 확인하고 부여 [ SecurityConfig ] : 시큐리티의 Authentication / Authorization 기능을 설정 (1) old 버전 @Configuration @EnableWebSecurity public class SecurityConfig (extends WebSecurityConfigurerAdapter) {..

Back to the Spring 2022.12.23

이미지 파일 다중 업로드, 미리보기 구현 ( AJAX )

게시글을 작성할 때, 단순하게 이미지 파일을 업로드 하는 방법은 정보도 많고, 구현이 간편하다. 1. 2. 3. Controller => MultipartFile file 로 받아주기 여러 이미지를 올리고 싶으면 A. 을 여러개 만들거나 B. 멀티플 속성을 달아주면 된다. - 근데, 이렇게 하면 A의 경우 => 파일첨부 칸이 여러줄 생겨서 UI 매력이 떨어진다 B의 경우 => 사용자들이 shift 로 여러파일을 선택하기 불편하다 ( 모르는 분들도 많다 ) 또한, 저대로만 만들어두게 되면 사용자가 업로드한 이미지 파일을 글 작성 페이지에서 눈으로 보면서 작성할 수 없다. 마침, 이런 생각을 가지고 이미지를 Preview 로 띄워주는 코딩을 구현해보고 있는데 (지긋지긋한) 예비군에서 반가운 연락이 오랜만에 ..

Back to the Spring 2022.09.24

IntlliJ 단축키 => Eclipse(STS) 단축키

JAVA 를 프로그래밍 언어로 사용할 때, 대표적인 IDE로는 Eclipse ( STS ) 혹은 IntelliJ 정도가 있다. InelliJ Ultimate (유료버전)은 여러 측면에서 편리한 기능들을 많이 제공하기 때문에 IntelliJ 한번 사용하면 STS 로 되돌아가기가 힘들정도 라는 평들이 많다. 하지만, 현재 시장에선 STS 또한 많이 사용되고 있는 환경이다. 팀 프로젝트를 진행하려면 git ignore 을 사용한다 할지라도 안정성 측면에서 IDE 툴은 하나로 맞추는게 좋다고 생각한다. ( 완벽하게 두 IDE 호환 대처가 가능할 정도가 된다면 상관이 없겠지만, 생각보다 복잡한 부분들도 존재했다. ) IDE 툴을 바꿔서 사용할 때, Setting 하는 법, UI 등 다른 부분에 적응하는 시간이 필..

Back to the Spring 2022.09.24

[SpringBoot] Boot <=>Spring MVC 비교 / 개발환경 세팅STS4

[ Spring Legacy Project ] ( Spring MVC ) - XML 설정 필요 - STS 3 사용 권장 ( Legacy / Boot 가능 ) [ Spirng Boot ] - XML 설정 최소화 - application.properties 에서 설정 - Configuration ( Java Class ) 생성해서 설정 - AJAX => Jackson bind 기능 내장 / utf-8 설정 자동 - STS4 사용 권장 (Boot 전용) - 개발환경 상, 큰 차이점은 XML 설정들을 applicaiton.properties 에 모으고, @어노테이션을 사용해 최소화 시켰다는 게 아닐까 합니다. web.xml - filter 한글 encoding => 자동 - SpringBean Config.xm..

Back to the Spring 2022.09.03