본문 바로가기
728x90

[Spring]37

당신의 첫 프로젝트를 위한 스프링 시큐리티 톺아보기 🙇🏻‍♂️ 안녕하세요. 저는 부트캠프를 나와서 개발자로 일하고 있는 사람입니다. 지금 생각해 보면 부트캠프 메인 프로젝트 기간 때 가장 골치 아프고 힘들었던 게 스프링 시큐리티였던 것 같아요. 당시에 막상 만들어 놓고 이해도 잘 못하고 팀원들에게 설명하기 어려워했던 기억이 납니다. 그래서 언젠가 프로젝트를 처음 하시는 분들을 위해 잘 몰라도 따라 할 수 있는 스프링 시큐리티 글을 써야겠다 생각을 했는데 그걸 이제야 하게 됐네요. 아무튼 잘 몰라도, 지나가는 할머니께 다짜고짜 설명해도 이해할 수 있게 쉽게 작성해 보겠습니다.  여기서는 웹, 앱 애플리케이션에서의 로그인, 로그아웃 구현을 위해 필요한 스프링 시큐리티(Spring Security)의 동작 원리에 대한 짤막한 개념과 설명을 다룹니다. 다음 .. 2024. 7. 6.
누구나 쉽게 적용 가능한 RestTemplate를 만들어보자. 💡 진행 중인 프로젝트에서 다른 api 서버와 통신이 필요했다. 여러 선택지 중에 Spring RestTemplate를 사용하는 것으로 결정되었기 때문에 이를 공부하고 나중에도 참고하여 사용할 수 있도록 정리해 보았다. 이 글에서는 외부 api 서버와의 통신 기술 중 restTemplate를 선택한 과정과 그 이유를 이야기하고, 누구나 참고하여 본인의 코드에 적용할 수 있도록 예시 코드를 작성하려고 한다. RestTemplate RestTemplate은 Spring 3.0부터 제공되어 왔던 동기식 HTTP 클라이언트로, RESTful 서비스를 호출할 때 많이 사용된다. 🙂 장점 사용하기 쉽고 코드가 직관적이다. HTTP 메서드(GET, POST 등)에 대한 다양한 메서드를 제공한다. 가장 무난한 방법으로.. 2023. 10. 17.
Spring Boot에서 외부 API 서버와 통신하는 기술에 대해 알아보자 💡 프로젝트에서 클라이언트로부터 받은 요청을 다른 API 서버에 전달하고 데이터를 받아 로직 처리 후 응답하는 기능이 필요했다. 지금까지 만들어 본 서버는 3-tier architecture라고 불리는 클라이언트 - 서버 - 데이터베이스 서버 간 통신의 범주에 크게 벗어나지 않았기 때문에 요청을 받아 다른 서버로 다시 넘겨주려면 어떻게 해야 하는지 감이 잡히지 않았다. GPT와 블로그 검색을 통해 찾아보니 정말 많은 방법이 있었다. 그중 5가지 방법을 추려내어 정리하려고 한다. 📌 여러 가지 방법과 장단점 Spring Boot를 사용하여 외부 API 서버와 통신하는 다양한 방법 중 RestTemplate, Spring WebClient, Spring Cloud OpenFeign, OkHttp, HttpC.. 2023. 8. 27.
Spring에서 HTTP 통신을 통해 JSON 형식의 데이터를 주고 받을 때 사용하는 애너테이션을 정리해보자. 💡 Java + Spring Boot을 이용하여 클라이언트와 http 통신을 할 때 전달받는 http 요청 메시지나, 전달하는 응답 메시지는 json 형식의 데이터로 이루어지는 경우가 많다. 이때 자바 객체(dto)에서 json 데이터로 어떻게 변환이 되는지를 잘 모르고 있는 것 같아 한 번 정리해보려고 한다. 우선 HTTP 통신에 대해 기본적인 내용을 훑고 넘어가자. HTTP 통신 중 가장 많이 사용하는 HTTP/1.1 기반의 통신 방식에 대해 알아보겠다. HTTP/1.1 기반의 통신 방식은 Request-Response 방식으로 동작한다. 클라이언트가 서버에 요청을 하면, 서버는 클라이언트의 요청에 대해 응답한다. 이때, 클라이언트는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 이.. 2023. 8. 14.
@Valid & @Validated 차이점에 대해 알아보자.(JSR 380 정리) @Valid & @Validated 자바 프로그래밍에서 입력값에 대한 유효성 검사를 도와주는 주석이다. 두 주석의 역할이 비슷한 것 같으면서도 분명한 차이점이 있어 이번 기회에 정리해보려고 한다. @Valid JSR 380(Java Bean Validation) 사양의 일부로 주석이 달린 개체의 유효성 검사를 하는 데 사용된다. 클래스 또는 메서드의 파라미터에서 @Valid라고 표시되면 기본 유효성 검증 제공자를 사용하여 미리 정의된 유효성 검증 제한 조건을 기반으로 유효성 검증을 수행하도록 spring에 지시한다. 사용 예시 Spring boot에서 컨트롤러 단 메서드에 @RequestBody 주석이 달린 파라미터 값에 적용되어 입력받는 값을 검증할 수 있다. 위의 예시로 보면 입력받는 requestB.. 2023. 6. 7.
스프링부트 프로젝트 JPA 관련 application.yml 기본 설정 정보 JPA 관련 jpa: hibernate: ddl-auto: create # 애플리케이션을 실행할 때 가존 테이블을 지우고 엔티티를 읽어 새로운 테이블을 자동으로 생성한다. properties: hibernate: show_sql: true # jpa나 hibernate가 만들어 내는 sql문을 System.out으로 출력한다. 실제 개발을 진행할 때는 system.out으로 로그를 찍지 않으므로 false로 설정해둔다. format_sql: true # query를 format에 맞춰 보기 깔끔하게 출력하게 한다. logging: level: org.hibernate.sql : debug # jpa와 hibernate가 만들어내는 sql문을 로그에 남긴다. org.hibernate.type : trace.. 2023. 5. 22.
Spring Boot Admin으로 관리 및 모니터링 서버 구현해보기 Spring Boot Admin Spring Boot 웹 애플리케이션을 위한 관리 및 모니터링 인터페이스를 제공한다. 관리 및 모니터링 대상은 서버의 상태(프로세스, 스레드, 메모리), 빈, 스케줄, 로거. JVM, 캐시 등이 있다. Codecentric에서 진행하고 있는 오픈소스 커뮤니티 프로젝트로 Spring에서 공식적으로 지원하는 것이 아니다. 간단하게 얘기해 Spring boot Admin이 서버가 되고, 관리 및 모니터링 대상 서버(우리가 개발한 Spring Boot 서버)가 클라이언트가 된다. 클라이언트에 admin 서버 주소를 설정하면 admin에 인스턴스가 하나 생기고 대시보드에서 모니터링을 할 수 있다. 본격적으로 Spring Boot Admin Server를 구축해 보자. Spring .. 2023. 5. 17.
spring.jpa.hibernate.ddl - DB 초기화 간단 정리 💡 Spring Data Jpa를 사용할 때 db 초기 설정에 대한 방법을 간단히 정리해 보았다. spring.jpa.hibernate.ddl 속성 config(설정 파일)를 만드는 yml or properties에 입력한다. spring.jpa.hibernate.ddl=true로 설정하면 Entity 애너테이션이 명시되어 있는 클래스를 찾아 ddl을 생성하고 실행한다. spring.jpa.hibernate.ddl-auto 속성 옵션값 none 아무것도 실행하지 않으며 대부분 DB에서의 기본값이다. create-drop SessionFactory가 시작될 때 drop 및 생성을 실행하고, SessionFactory가 종료될 때 drop을 실행한다.(in-memory DB의 경우 기본값임) 간단히 설명하면.. 2023. 4. 27.
728x90