본문 바로가기

분류 전체보기510

디자인 패턴 간략히 알아보기 디자인 패턴이란, 특정 문맥에서 공통적으로 발생하는 문제에 대해 쓰이는 재사용 가능한 해결책 목적으로 일정한 패턴을 나타낸 것. 대표적으로 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.
th:switch & th:case 예제 @GetMapping("/ex05") public String thymeleafExample05(Model model) { List itemDtoList = new ArrayList(); for (int i = 1; i 2022. 9. 13.
th:if & th:unless 예제 @GetMapping("/ex04") public String thymeleafExample04(Model model) { List itemDtoList = new ArrayList(); for (int i = 1; i 2022. 9. 13.
th:each 예제 반복문을 활용해서 List 에 값을 담아주었다. @GetMapping("/ex03") public String thymeleafExample03(Model model) { List itemDtoList = new ArrayList(); for (int i = 1; i 2022. 9. 13.
th:text 예제 데이터를 주고 받을 때는 Entity 클래스 자체를 반환하면 안되며, 데이터 전달용 객체(Data Tranfer Object)를 생성해서 사용해야 한다. ItemDto.class @Data public class ItemDto { private Long id; private String itemNm; private Integer price; private Integer stock; private String itemDetail; private String sellStatus; private LocalDateTime regTime; private LocalDateTime updateTime; } 컨트롤러 예제 @GetMapping("/ex02") public String thymeleafExample02(.. 2022. 9. 13.