본문 바로가기

분류 전체보기510

테스트 코드의 개념에 대해 알아보자 (JUnit, TDD) TDD(Test Driven Development) 에 대한 간단 정리 - 테스트 주도 개발이라는 의미 - 테스트를 먼저 설계 및 구축 후 테스트를 톤과할 수 있는 코드를 짜는 것 - 애자일 개발 방식 중 하나. ** 코드 설계시 원하는 단계적 목표에 대해 설정하여 진행하고자 하는 것에 대한 결정 방향의 갭을 줄이고자 함. ** 최초 목표에 맞춘 테스트를 구축하여 그에 맞게 코드를 설계 -> 적은 의견 충돌을 기대할 수 있다. 목적 - 코드의 안정성을 높일 수 있다 - 기능을 추가하거나 변경하는 과정에서 발생할 수 있는 사이드이펙트를 줄일 수 있다. - 해당 코드가 작성된 목적을 명확하게 표현할 수 있다 JUnit 이란? - 단위 테스트(Unit Test)를 위한 도구를 제공 단위테스트 : 코드의 특정 .. 2022. 9. 15.
ORM 이란 무엇일까? ORM ( Object Relational Mapping ) - 어플리케이션의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 의미 ORM 의 장점 1. ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다. - 쿼리문을 작성하는 양이 줄어들어 개발 비용이 줄어든다 - 객체지향적으로 데이터베이스에 접근할 수 있어 코드의 가독성을 높인다. 2. 재사용 및 유지보수가 편리하다 - ORM 을 통해 매핑된 객체는 모두 독립적으로 작성되어 재사용이 용이하다 - 각 클래스로 나뉘어져 있어 유지보수에 편리하다. 3. 데이터베이스에 대한 종속성이 줄어든다 ORM 의 단점 1. ORM 만으로는 온전한 서비스를 구현하기에 한계가 있다. - 복잡한 서비스는 직접 쿼리를 구성해야 한다. - 설계.. 2022. 9. 15.
Lombok 알고 사용하자! Lombok - 반복되는 메서드를 어노테이션을 사용하여 자동으로 작성해주는 라이브러리 - 일반적으로 VO, DTO, Model, Entity 등의 데이터 클래스에서 자주 사용한다 대표적으로 사용하는 어노테이션은 아래와 같다. 종류 의도 @Getter get 메서드를 자동으로 생성 @Setter set 메서드를 자동으로 생성 @NoArgConstructor 파라미터가 없는 생성자를 생성 @AllArgConstructor 모든 필드값을 파라미터로 갖는 생성자를 생성 @RequiredArgsConstructor 필드값 중 final 인 값을 갖는 생성자를 생성 @ToString toString 메서드를 자동으로 생성 @EqualsAndHashCode equals , hashCode 메서드를 자동으로 생성 - .. 2022. 9. 15.
API를 작성하는 다양한 방법 @RestController - @Controller + @ResponseBody 가 결합된 어노테이션 - 컨트롤러 클래스 하위 메서드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송 가능 - View를 거치치 않고 HTTP ResponseBody에 직접 Return 값을 담아서 보낸다. @RequestMapping - MVC의 핸들러 매핑을 위해서 사용한다. - 클래스와 메소드의 RequestMapping 을 통해URL을 매핑하여 경로를 설정 및 해당 메서드 처리가능 method : GET, POST , DELETE , PUT, PATCH 스프링 4.3 부터 메소드를 지정하는 방식을 간단하게 사용가능하다. - @GetMapping - @PostMapping - @Del.. 2022. 9. 15.
네트워크 - 2.TCP/IP 4 계층 모델 보호되어 있는 글 입니다. 2022. 9. 15.
네트워크 - 1.네트워크 기초 보호되어 있는 글 입니다. 2022. 9. 14.
스프링 시큐리티 설정 추가 시큐리티 의존성만 추가하고 실행하면 모든 요청에 인증을 해야한다. 각 페이지마다 필요한 권한과 인증의 유무가 다른데, 확인하고 이후 설정해야한다. EX ) 인증이 필요없는 경우 : 상세페이지 화면, 게시물 조회 등 인증이 필요한 경우 : 주문, 글쓰기, 댓글 등 관리자 권한이 필요한 경우 : 상품 등록 등 의존성 추가하기 - gradle implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' 해당 의존성을 추가하면 모든 요청에 대해 인증을 요청한다. 로그인 페이지로 이동하게 되는데, 스프링에서 제공하는 아이디.. 2022. 9. 14.
스프링 시큐리티 소개 애플리케이션의 보안에서 중요한 두가지 영역은 '인증'과 '인가' 이다. 웹에서 인증이란, 해당 리소스에 대해서 작업을 수행할 수 있는 주체인지 확인하는 것이다. 예를 들어 어떤 커뮤니티에서 게시판의 글을 보는 것은 로그인을 하지 않아도 되지만, 댓글을 작성하려면 로그인을 해야한다. 댓글을 달기 위해서는 로그인이라는 인증을 거쳐야 한다. 인가는 인증 이후에 일어난다. 커뮤니티를 관리하는 관리자 페이지에 접근하는 URL을 입력했을 때, 해당 URL 은 커뮤니티의 관리자만 접근할 수 있어야 한다. 이때 접근하는 사용자가 해당 URL 에 대해서 인가된 회원인지를 검사하는 것이다. 인가된 회원이라면 URL 에 대한 권한이 있기 때문에 접근이 가능하다. 2022. 9. 14.
Thymeleaf 페이지 레이아웃 보통 웹사이트를 만드려면 header , footer, menu 등 공통적인 페이지 구성 요소들이 있다. 이런 공통 요소들을 모든 html 에 넣는다면 수정 시 전부다 찾아서 바꿔줘야 한다. 이러한 문제점을 해결하기 위해 페이지 레이아웃을 이용하여 공통 요소 관리를 쉽게 할 수 있다. 의존성 추가하기 - gradle implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' 예제를 위한 파일 생.. 2022. 9. 14.