본문 바로가기

독서51

[스프링 부트 핵심 가이드] Chapter 13장. 서비스의 인증과 권한 부여 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 13장. 서비스의 인증과 권한 부여 어플리케이션을 개발하다 보면, 유저들이 인증과 인가를 해야 사용할 수 있는 기능들을 개발하게 된다 즉 보안 기능을 추가 해야 한다는 것이고, 보안을 위해서는 스프링에서 Spring Security가 있다 어플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프로젝트 중 하나 보안 관련된 많은 기능을 제공한다 보안 용어 이해 인증 (Authentication) 사용자가 누구인지 확인하는 단계다 (로그인) 확인이 되면, 서버는 유저에게 토큰을 전달한다 이 토큰을 이용하여, 유저는 원하는 리소스에 접근할 수 있게 된다 인가 (Authorization) 인증된 토큰, 즉 검증된 유저가 어플리케이션.. 2023. 10. 14.
[스프링 부트 핵심 가이드] Chapter 12장. 서버 간 통신 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 12장. 서버 간 통신 최근 서비스들은 마이크로 서비스 아키텍처 (MSA)를 주로 채택하고 있다 이 뜻은 어플리케이션이 가지고 있는 기능 (서비스)이 하나의 비즈니스 범위만 가지는 형태이다 이런 MSA를 도와주는 RestTemplate과 WebCilent가 있다 RestTemplate이란? 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다 서버와의 통신을 단순화한 템플릿을 사용하여 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다 기본적으로 동기 방식이고, 비동기 방식으로 바꾸기 위해서는 AsyncRestTemplate을 사용하면 된다 하지만 RestTemplate은 중단된 상태라서 WebClient 방식도 .. 2023. 10. 8.
[스프링 부트 핵심 가이드] Chapter 11장. 액추에이터 활용하기 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 11장. 액추에이터 활용하기 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용하여 어플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다 JMX (Java Management Extensions)는 자바에서 어플리케이션의 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API다 MBeans (Managed Beans)를 생성해야 한다 아래와 같이 spring-boot-starter-actuator 모듈의 종속성을 추가한다 SwaggerConfiguration 클래스를 가져오고 그에 따른 의존성을 추가해야 한다 org.springframework.boot spring-boot-starter-actuator 엔드포인트 Act.. 2023. 10. 8.
[스프링 부트 핵심 가이드] Chapter 10장. 유효성 검사와 예외 처리 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 10장. 유효성 검사와 예외 처리 어플리케이션의 비즈니스 로직이 올바르게 동작하기 위해서 데이터를 사전 검증하는 작업이 필요하고, 이것을 유효성 검사 또는 데이터 검증이라고 한다 유효성 검사는 Validation으로 프로그래밍에서 매주 중요한 부분이고, 자바에서 가장 신경 써야 하는 것 중 하나가 NullPointException 예외이다 일반적인 어플리케이션 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직에서, 계층별로 진행하게 되면 각 클래스별로 분산되어 있어 관리하기 어렵고, 검증 로직에 중복이 많아 유사한 기능의 코드가 존재할 수 있으며, 검증해야 할 값이 많으면, 코드가 길어진다는 문제점이 있다 이를 해결하기 위해 자.. 2023. 10. 1.
[스프링 부트 핵심 가이드] Chapter 9장. 연관 관계 매핑 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 9장. 연관 관계 매핑 RDBMS를 사용할 때에 한 테이블을 가지고 모든 기능을 구현하기 불가능 하다 즉 여러 테이블을 이용하고, 연결하여 기능을 구현한다 One To One : 일대일 (1:1) One To Many : 일대다 (1:N) Many To One : 다대일 (N:1) Many To Many : 다대다 (N:M) 일대일 매핑 일대일 단방향 매핑 @Entity @Table(name="MEMBER") @Getter @Setter @NoArgsConstructor public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long mem.. 2023. 9. 24.
[스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 JPQL JPA Query Language의 줄임말로 JPA에서 사용할 수 있는 쿼리를 의미한다 JPQL은 엔티티 객체를 대상으로 수행하는 쿼리다 쿼리 메서드 주로 Repository라는 패키지를 만들어서, 그 안에 Repository 인터페이스를 만든다 그리고 인터페이스는 JpaRepository 클래스를 상속 받아서 다양한 CRUD 메서드를 사용할 수 있다 쿼리 메서드는 크게 동작을 결정하는 주제 (Subject)와 서술어 (Predicate)로 구분한다 'find.... By', 'exists... By'와 같은 키워드로 쿼리 주제를 정하며 'By'는 서술어의 시작을 나타내는 구분자 역할을 .. 2023. 9. 16.
[스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 어플리케이션은 데이터를 주고 받는 것이 주 목적이다 특히 엔터프라이즈급 어플리케이션에서는 데이터베이스가 꼭 필요하다 Maria DB 설치 https://mariadb.org/download 에서 마리아DB를 설치할 수 있다 그 외에도 MySQL 같이 다양한 데이터 베이스가 있다 ORM Object Relational Mapping으로 자바와 같은 객체 지향 언어에서 의미하는 객체와 RDB (Relational Database)의 테이블을 자동을 매핑하는 방법이다 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다 쿼리문 전체를 작성하지 않아도 된다 (개발 비용이 줄어든다) 객체지향적으로 데.. 2023. 9. 8.
[스프링 부트 핵심 가이드] Chapter 5. API를 작성하는 다양한 방법 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 5. API를 작성하는 다양한 방법 각 HTTP 메서드에 해당하는 API를 개발할 예정이다 GET / POST / PUT / DELETE 가 있다 GET API 만들기 주로 어플리케이션에서 데이터를 조회할 때에 사용하는 API이다 아래에서는 http://localhost:8080/api/v1/get-api/name 주소로 실행이 된다 새로 메서드를 만들때마다, 어플리케이션을 실행해야 한다 @RestController @RequestMapping("/api/v1/get-api") public class GetController { // http://localhost:8080/api/v1/get-api/name @GetMapping("/na.. 2023. 9. 3.
[스프링 부트 핵심 가이드] Chapter 4. 스프링 부트 애플리케이션 개발하기 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 4. 스프링 부트 애플리케이션 개발하기 프로젝트 생성 두 가지 방법이 있다 Spring Initializr 라는 사이트를 통해 프로젝트를 생성한다 Intellij IDEA에서 프로젝트를 생성한다 인텔리제이 IDEA에서 프로젝트 생성 인텔리제이에는 Spring Initializr가 내장이 되어 있다 외부에서 프로젝트를 만드는 것이 아닌, 인텔리제이에서 바로 프로젝트를 생성하고 개발할 수 있다 1. 인텔리제이에서 New Project를 클릭하기 2. 왼쪽 바에 언어와 빌더 등이 있는데 Spring Initializer 선택하기 Name : 프로젝트 이름 Location : 프로젝트를 생성할 위치 Language : JVM (Java Virt.. 2023. 9. 2.