목록개발새발/스프링부트3 백엔드 개발자 되기 (12)
JaPark Bug World
10.1 사전지식 : OAuthOAuth란?제3의 서비스에 계정 관리를 맡기는 방식이다. 흔히 볼 수 있는 네이버, 구글로 로그인하기 같은 방법이다. 리소스 오너(resource owner) : 인증 서버에 자신의 정보를 사용하도록 허가하는 주체. 서비스를 이용하는 사용자가 리소스 오너에 해당된다. 리소스 서버(resource server) : 리소스 오너의 정보를 가지며, 리소스 오너의 정보를 보호하는 주체를 의미한다. 네이버, 구글, 페이스북이 리소스 서버에 해당된다. 인증서버(authorization server) : 클라이언트에게 리소스 오너의 정보에 접근할 수 있는 토큰을 발급하는 역할을 하는 애플리케이션을 의미한다. 클라이언트 애플리케이션(client application) : 인증 서버에게..
8.1 스프링 시큐리티스프링 시큐리티(Spring Security)는 스프링 기반의 애플리케이션 보안(인증, 인가)를 담당하는 스프링 하위 프레임워크이다. 인증과 인가인증(authentication)은 사용자의 신원을 입증하는 과정이며, 사용자가 사이트에 로그인을 할 때 누구인지 확인하는 과정이다. 인가(authorization)는 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업이다. 관리자는 관리자 페이지에 들어갈 수 있지만 일반 사용자는 관리자 페이지에 들어갈 수 없다. 이런 권한을 확인하는 과정을인가라고 한다. 스프링 시큐리티스프링 시큐리티는 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다. 보안 관련 옵션을 설정하고 애너테이션으로 설정도 매우 간단하며 CSRF 공..
7.1 사전지식 : 타임리프타임리프는 템플릿 엔진이다. 템플릿 엔진은 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, 즉 HTML 상에 그 데이터를 넣어 보여주는 도구이다. 다만 HTML과 함께 템플릿 엔진을 위한 문법을 살짝 섞어서 사용해야 한다. 템플릿 엔진 개념 잡기// 간단한 탬플릿 문법을 위한 예// 서버에서 보내준 데이터 예{ 이름: "홍길동" 나이: 11}값이 달라지면 그때 그때 화면에 반영하니 동적인 웹 페이지를 만들 수 있게 된다. 템플릿 엔진은 각각 문법이 미묘하게 달라서 템플릿 엔진마다 문법을 새로 배워야 한다. 대부분 구조는 비슷하며, 스프링은 타임리프를 권장하고 있다. 타임리프 표현식과 문법표현식설명${...}변수의 값 표현식#{...}속성 파일 값 표현식@{...}URL ..
6.1 사전 지식 : API와 REST API네트워크에서 API(Applicaton Programming Interface)는 프로그램 간에 상호작용하기 위한 매개체를 말한다. 클라이언트의 요청을 서버에 전달하고, 서버의 결과물을 클라이언트에게 전달한다. <h3 s..
5.5 예제 코드 살펴보기 @Getter @Entity // 1) 엔티티로 지정 @NoArgsConstructor(access = AccessLevel.PROTECTED) // 2) 기본 생성자 @AllArgsConstructor public class Member { @Id // 3) id 필드를 기본키로 지정 @GeneratedValue(strategy = GenerationType.IDENTITY) // 4) 기본키를 자동으로 1씩 증가 @Column(name = "id", updatable = false) private Long id; // DB TABLE 'id' column matching @Column(name = "name", nullable = false) // 5) name 이라는 no..
5.2 ORM이란?object-relational mapping은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법이다. 보통은 SQL이라는 언어로 데이터베이스에 있는 값을 꺼내는 방식을 사용한다. 하지만 ORM이 있다면 데이터베이스의 값을 마치 객체처럼 사용할 수 있다. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 해주는 도구라고 할 수 있다. ORM의 장점과단점장점SQL을 직접 작성하지 않고 사용하는 언어로 데이터베이스에 접근 가능객체지향적으로 코드를 작성 할 수 있으므로 비즈니스 로직에만 집중 가능데이터베이스 시스템이 추상화되어 있기 때문에 MySQL에서 PostgreSQL로 전환한다고 해도 추가로 드는 작업이 거의 없다.매핑하는 정보가 명확하기 때문에 ERD에 ..
4.1 테스트 코드 개념 익히기 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드이다. 안드로이드 개발을 하면서도 유닛 테스트가 있었지만 사용을 하지 않았다. 확인이 필요한 액티비티 또는 프래그먼트 화면단을 바로 start intent 시켜서 확인하거나 그랬는데, 이것도 앞에 진행해야 할 로직이 있다면 더미데이터로 세팅을 다 해놓거나 하는 번거로움이 크긴 했다. 이번기회에 배워보겠다............ 테스트 코드란? 테스트 코드에도 다양한 패턴이 존재하지만 given-when-then 패턴에 대해 알아본다. given 테스트 실행을 준비하는 단계 when 테스트를 진행하는 단계 then 테스트 결과를 검증하는 단계 4.2 스프링부트3와 테스트 스프링부트는 애..
3.1 스프링부트 3 구조 살펴보기 스프링 부트는 각 계층이 양 옆의 계층과 통신하는 구조를 따른다. (자세한 내용은 교재 79p 참조) 계층이라는 것은 각자의 역할과 책임이 있는 어떤 소프트웨어의 구성 요소를 의미한다. 각 계층은 소통할 수 있지만 다른 계층에 직접 간섭하거나 영향을 미치지 않는다. 프레젠테이션 계층 (Controller) HTTP 요청을 받고 이 요청을 비즈니스 계청으로 전송하는 역할이다. 컨트롤러는 스프링 부트 내에 여러 개가 있을 수 있다. 비즈니스 계층 (Service) 모든 비즈니스 로직을 처리한다. 서비스를 만들기 위한 로직이며, 웹 사이트에서 벌어지는 모든 작업, 발생하는 예외 등 프로세스를 구현하기 위한 로직 등. 퍼시스턴스 계층(Repository) 모든 데이터베이스 관..
@SpringBootApplication 이해하기 @SpringBootApplication public class SpringBootDeveloperApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDeveloperApplication.class, args); } } 이 클래스는 자바에의 main() 메서드와 같은 역할이다. 여기서 스프링 부트가 시작이 된다. @SpringBootApplication 애너테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해준다. SpringApplication.run() 메서드는 애플리케이션을 실행한다. 첫번째 인수는 스프링 부트3 애플리케이션의 메인 클래스로..
스프링 부트 스타터 살펴보기 스프링 부트 스타터는 의존성이 모여 있는 그룹이다. 스타터를 사용하면 필요한 기능을 간편하게 설정할 수 있다. 스타터는 spring-boot-starter-{작업유형} 이라는 명명규칙이 있다. 스타터 설명 spring-boot-starter-web Spring MVC를 사용해서 RESTful 웹 서비스를 개발 할 때 필요한 의존성 모음 spring-boot-starter-test 스프링 애플리케이션을 테스트하기 위해 필요한 의존성 모음 spring-boot-starter-validation 유효성 검사를 위해 필요한 의존성 모음 spring-boot-starter-actuator 모니터링을 애플리케이션에서 제공하는 다양한 정보를 제공하기 쉽게 하는 의존성 모음 spring-b..