Spring132 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. 스프링 시큐리티 설정 추가 시큐리티 의존성만 추가하고 실행하면 모든 요청에 인증을 해야한다. 각 페이지마다 필요한 권한과 인증의 유무가 다른데, 확인하고 이후 설정해야한다. 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. 디자인 패턴 간략히 알아보기 디자인 패턴이란, 특정 문맥에서 공통적으로 발생하는 문제에 대해 쓰이는 재사용 가능한 해결책 목적으로 일정한 패턴을 나타낸 것. 대표적으로 GoF 에서 제시한 23개의 패턴이 있다. 프로젝트를 설계 및 구현 시 필요한 디자인패턴이 있다면 검색 후 사용하도록 하자. 생성패턴 - 객체의 생성과 관련 - 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 최소화 할 수 있도록 유연성 제공 생성패턴 의도 추상 팩토리(Abstarct Factory) 구체적인 클래스를 지정하지 않고 인터페이스를 통해 연관되는 객체를 묶음 빌더(Builder) 객체의 생성과 표현을 분리하여 객체를 생성 팩토리 메소드(Factory Method) 객체 생성을 서브클래스로 분리하여 위임(캡슐화) 프로토타입(Prototype) 원본.. 2022. 9. 14. 빌드 관리 도구 ( Gradle / Maven ) 프로젝트에서 필요한 xml, proerties, jar 파일들을 자동으로 인식하여 빌드해주는 도구이다. 소스 코드를 컴파일, 테스트 등을 하여 실행가능한 앱으로 빌드한다. 프로젝트 정보 관리, 테스트 빌드, 배포 등의 작업을 진행한다. 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트의 관리를 해준다. 자바의 대표적인 빌드 도구로는 Maven, Gradle 이 있다. Gradle VS Maven Gradle 에 비해 Maven 이 점유율은 높지만, 점차 역전하고 있다.Gradle에 비해 Maven 의 성능이 떨어진다. Maven에 비해 Gradle이 대규모 프로젝트에서의 성능이 좋다 -> 간결하다. Maven : pom.xml / Gradle : build.gradle 메이븐 , 그레이들 모두 각.. 2022. 9. 14. 좋은 객체 지향 설계의 5가지 원칙(SOLID) SRP : 단일 책임 원칙 ( Single Responsibility Principle) OCP : 개방-폐쇄 원칙 ( Open/Closed Principle) LSP : 리스코프 치환 원칙 ( Liskov Substitution Principle ) ISP : 인터페이스 분리원칙 ( Interface Segregation Principle ) DIP : 의존관계 역전 원칙 ( Dependency inversion priciple ) SOLID 란 객체 지향 프로그램을 하면서 지켜야하는 5대 원칙이다. 해당 원칙을 지키면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 된다. SRP 단일 책임 원칙 - 한 클래스는 하나의 책임(기능)만 가져야 한다. - 클래스를 변경.. 2022. 9. 14. JPA Auditing 적용 Auditing 이란, 감시하다 라는 뜻을 가지고 있다. 각 데이터 마다, 누가, 언제 데이터를 생성했고 변경했는지 감시한다는 의미로 사용한다. 엔티티 클래스에는 공통적으로 들어가 있는 필드는 생성일자와 변경일자 같은 것이 있다. 반복적으로 넣어주는 일을 줄이기 위해서 Auditing 기능을 사용한다. @EnableJpaAuditing 추가 @SpringBootApplication @EnableJpaAuditing public class AdvancedJpaApplication { public static void main(String[] args) { SpringApplication.run(AdvancedJpaApplication.class, args); } } BaseEntity 만들기 - 코드의 중.. 2022. 9. 13. th:href 예제 타임리프에서는 링크를 처리하는 문법으로 th:href를 사용한다. @GetMapping("/ex05") public String thymeleafExample05() { return "thymeleafEx/thymeleafEx05"; } 아래와 같이 상대경로와 절대경로로 표현할 수 있다. 태그를 사용하여 th:href="@{ }" 안에 경로를 넣어준다 예제 1페이지 이동 thymeleaf 공식 홈페이지 이동 Thymeleaf 링크처리 예제 페이지 예제 1페이지 이동 thymeleaf 공식 홈페이지 이동 결과 2022. 9. 13. 이전 1 ··· 10 11 12 13 14 15 다음