TIL56 내일배움캠프 9주차 Spring Pagination 오늘의 키워드Pagination오늘의 내용페이지네이션은 사용자가 요청했을 때 DB에 있는 데이터를 일정 길이로 잘라 일부분만 제공하는 기능이다데이터가 별로 없을땐 괜찮지만 데이터의 양이 많아질수록 서버의 부하가 커지기 때문에 꼭 필요하다Paging전체 데이터를 일정한 크기의 페이지로 분할하는 과정이다.Slicing데이터의 일부를 선택하는 기능으로 특정 페이지에 해당하는 데이터들을 추출하는 과정이다.직접 작성 했던 코드이다@GetMapping public ResponseEntity> getBoards( //시작페이지 번호를 지정 @RequestParam(value = "page", defaultValue = "1") int page, //페이지별 보여줄 데이터의 개수를 .. 2024. 6. 10. 내일배움캠프 8주차 Spring Global Exception Handler 오늘의 키워드Global Exception Handler오늘의 내용Global Exception Handler애플리케이션 전역에서 발생하는 예외를 처리하기 위한 방법이다주로 Spring Framework에서 @ControllerAdvice와 @ExceptionHandler을 사용해 구현한다@ControllerAdvice는 전역적으로 예외를 처리할 수 있는 애너테이션이고 @Controller 애너테이션이 붙은 컨트롤러에서 발생하는 예외를 처리할 수 있다@ExceptionHandlerAOP를 이용한 예외처리 방식이다메서드에 선언해 예외 처리를 하려는 클래스를 지정하면 예외 발생 시 정의된 로직에 의해 처리된다아래는 GlobalExceptionHandler의 예제이다@ControllerAdvicepublic .. 2024. 6. 7. 내일배움캠프 8주차 Spring Swagger 적용하기 오늘의 키워드Swagger오늘의 내용Swagger-uiRest API를 설계, 빌드, 문서화하고 사용하는데 도움 되는되는 OpenAPI 사양을 중심으로 구축된 오픈 소스 도구이다swagger의 장점은 구현 논리를 마련하지 않고도 API리소스를 시각화해서 Postman보다 편리했다사용방법사용을 위해서는 build.gradle에 의존성을 추가 해준다dependencies { // Swagger 설정 implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'}Swagger config 클래스를 만들어 작성해 준다@Configurationpublic class SwaggerConfig { @Bean public OpenA.. 2024. 6. 6. 내일배움캠프 8주차 Java Class, 예외처리 오늘의 키워드Java의 여러 class예외처리오늘의 내용Java.util 클래스유틸리티 클래스들을 제공하는 패키지다양한 표준 프로그래밍 자료 구조체를 지원하는 클래스를 지원한다Vector 클래스객체의 배열로써 구성되는 확장 가능한 배열이다동적으로 크기가 변하는 배열이 되어 객체의 수를 미리 정할 수 없을 때 사용가능하다데이터를 저장할 기억 장소가 일정하지 않는 경우 주로 사용하며 일정한 기억 장소가 차게 되면 다시 일정크기만큼 기억장소를 확보해 여러 가지의 데이터형을 기억시킬 수 있다public Vector( ) 로 클래스를 생성한다Random 클래스임의의 난수를 발생시키는 객체이다seed에 따라 일정한 수치를 발생시키는 함수를 가지고 있어 내부적으로 seed를 바꾸어 준다public Random(int.. 2024. 6. 4. 내일배움캠프 8주차 프로젝트 리펙토링 오늘의 키워드피드백을 기반으로 리펙토링https://github.com/marlboro09/schedule/wiki HomeContribute to marlboro09/schedule development by creating an account on GitHub.github.com오늘의 내용Servcie레이어를 하나의 패키지로 모아두셨는데 JwtService는 따로 빠져있습니다. 패키지 룰에 맞게 위치시켜 주세요. JWT는 도메인 패키지로 묶이고 타 서비스들은 서비스 패키지입니다. 하나로 통일시켜 주세요아래와 같이 수정완JwtService 파일을 service패키지로 이동해서 해결함 service마다 transactional 고민한 것 좋습니다. 다만 너무 많이 사용하게 되면 낭비니 필요한 부분에서만.. 2024. 6. 3. 내일배움캠프 7주차 Spring Refresh Token 오늘의 키워드Refresh Token오늘의 내용Refresh Token사용자의 인증을 위한 토큰이 아니라 새로운 Access 토큰을 생성하는 용도로 사용된다인증은 access토큰이 담당하지만 시간이 만료되면 refresh토큰으로 다시 access토큰을 생성해 준다토큰은 만료시간을 두는데 이유는 토큰이 유출되게 되면 사용자의 정보가 탈취당하기 때문에 만료시간을 주어 시간이 만료되면 아무 의미 없는 문자열이 되기 때문이다access토큰은 보안 때문에 시간을 짧게 정해 잦은 로그인을 해야 되는 상황이 발생하기 때문에 refresh토큰을 사용한다. refresh토큰은 만료시간이 길고 access토큰을 발급하는 기능을 하기 때문이다적용방법 JwtRokenProvider를 사용해 Refresh 토큰을 발급하는 메서.. 2024. 5. 31. 내일배움캠프 7주차 Spring Password Encoder, @Authenticationprincipal 오늘의 키워드Password Encoder@Authenticationprincipal오늘의 내용Password Encoder비밀번호의 안전한 저장을 위해 단방향 암호화를 지원하는 인터페이스와 구현체를 제공하는 기능구현 클래스의 종류BcryptPasswordEncoder : BCrypt 해시 함수를 사용해 비밀번호를 암호화한다Bruteforce attack이나 Rainbow table attack과 같은 Password Cracking에 대한 저항력을 높이기 위해 의도적으로 느리게 설정되어 있다 BCryptPasswordEncoder의 속도는 강도(strength)를 조정해서 조절할 수 있습니다. 강도는 4 ~ 31까지 설정할 수 있으며, BcryptPasswordEncoder는 default 강도로 아래.. 2024. 5. 31. 내일배움캠프 7주차 Spring @PathVariable, @RequestParam, @ModelAttribute, @RequestBody,...... 오늘의 키워드RESTful API @PathVariable, @RequestParam, @ModelAttribute, @RequestBodyDispatcher-Servlet 오늘의 내용ㅇRESTful API - 웹 표준을 기반으로 하는 API설계 아키텍처입니다 - 네트워크 상에서 클라이언트와 서버 간의 통신을 위해 자원의 상태를 전달하는 방법을 정의 - 클라이언트가 서버의 자원에 접근하고 이를 활용할 수 있도록 하는 역할 ㅇ자원 중심의 URI설계 - 각 자원은 URI로 명확히 식별되어야 한다 - URI는 명사를 사용해야 한다 ㅇHTTP메서드를 통한 행위 정의 -GET : 자원을 조회 -POST : 자원을 생성 -PUT : 자원을 업데이트 -DELETE : 자원을 삭제 ㅇ데이터 포맷 - JSON(JavaS.. 2024. 5. 29. 이전 1 2 3 4 5 6 7 다음