TIL(Develop)53 Spring Bean Bean 수동 등록 new project → web, lombok, thymeleaf 추가 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' dependency 프로젝트 생성시 추가하는거 까먹어서 수동으로 gradle.build에 추가해줌 // Security implementation 'org.springframework.boot:spring-boot-starter-security' Security 추가해줌! Security 기능 제한.. 2023. 11. 20. JPA in Spring Boot JPA in Spring Boot SpringBoot 환경에서의 JPA 메모장 프로젝트 JPA 설정 build.gradle : spring-boot-starter-data-jpa 추가 // JPA 설정 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' application.properties : Hibernate 설정 spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.use_sql_comme.. 2023. 11. 15. [JPA Core] JPA Core - Java 환경에서의 JPA JPA란 무엇일까? DB를 직접 다룰 때의 문제점 애플리케이션에서 아래 형태의 객체 데이터를 DB에 저장해서 관리해야 하는 상황 public class Memo { private Long id; private String username; private String contents; } DB 테이블 만들기 create table memo ( id bigint not null auto_increment, contents varchar(500) not null, username varchar(255) not null, primary key (id) ); 이처럼 직접 DB로 접속해서 SQL을 호출해야합니다. 애플리케이션에서 SQL 작성 String sql = "I.. 2023. 11. 15. IoC와 DI IoC (제어의 역전) → 객체지향의 SOLID 설계원칙 DI (의존성 주입) → GoF 디자인 패턴 김치 볶음밥 맛있게 만드는 방법 (설계 원칙) 김치 볶음밥 레시피 (디자인 패턴) 좋은 코드를 위한 Spring의 IoC와 DI 논리가 간단해야 한다. 중복을 제거하고 표현을 명확하게 한다. 코드를 처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다. 의존성을 최소화해야 한다. 새로운 기능을 추가 하더라도 크게 구조의 변경이 없어야 한다. → DI 패턴을 사용하여 IoC 설계 원칙을 구현하여 Spring이 개발자가 Java를 사용하여 쉽게 좋은 코드를 작성할 수 있도록 도와줌 의존성 강하게 결합되어있는 Consumer 와 Chicken public class Consumer { void eat() {.. 2023. 11. 9. 3 Layer Architecture 역할 분리 지금의 메모장 프로젝트는 MemoController로 모든 api를 처리하고 있음 한개의 클래스에 너무 많은 코드가 존재해서 코드를 이해하기가 어려움 코드의 추가/ 변경 요청이 계속 생김 → MemoController 구현한 개발자 퇴사하면 큰일남 서버의 기능을 3 Layer Architecture : Controller, Service, Repository 으로 분리함 client ↔ controller ↔ service(로직 처리)↔ Repository(DB CRUD 처리) 역할 분리하기 src → main → com → service 패키지 생성 → MemoService 클래스 생성 package com.sparta.memo.controller; import com.sparta.memo.dto.Me.. 2023. 11. 9. Database&SQL&JDBC DBMS Database Management System’ Database를 관리하고 운영하는 소프트웨어 RDBMS Relational DBMS 관계형 데이터베이스 RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있다. 테이블간 FK(Foreign Key)를 통해 다른 데이터를 조합해서 함께 볼수 있는 것이 장점 아이디 이름 전화번호 그룹 column 명 ka123 카즈하 010-7777-7777 르세라핌 1 row kim123 김채원 010-6666-6666 르세라핌 2 row sa123 사쿠라 010-8888-8888 르세라핌 3 row heo123 허윤진 010-0000-0000 르세라핌 4 row hong123 홍은채 010-1.. 2023. 11. 7. HTTP 데이터를 객체로 처리하는 방법 request→Star클래스 만듦 우클릭 → generate → Constructor ctrl로 전부 체크 public Star(String name, int age) { this.name = name; this.age = age; } 모든 필드 체크하면 이게 뜸 @ModelAttribute Body 부분에 데이터가 들어왔을 때 객체로 처리하는 방법 Body 부분에 들어온 QueryString 방식의 데이터를 객체에 매핑해서 가지고 옴 RequestController에 이거 추가 // [Request sample] // POST // Header // Content type: application/x-www-form-urlencoded // Body // name=Robbie&age=95 @PostMap.. 2023. 11. 7. Path Variable과 Request Param Path Variable Client 즉, 브라우저에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다. 서버에서는 이 데이터를 받아서 사용해야하는데 데이터를 보내는 방식이 한 가지가 아니라 여러 가지가 있기 때문에 모든 방식에 대한 처리 방법을 학습해야 한다. templates→new→hello-request-form.html 생성 GET /star/{name}/age/{age} 이름: 나이: 전송 GET /hello/request/form/param 이름: 나이: 전송 POST /hello/request/form/param 이름: 나이: 전송 POST /hello/request/form/model 이름: 나이: 전송 GET /hello/request/form/param/model 이름: .. 2023. 11. 6. Jackson이란 무엇일까 스프링이 3.0 이후로 Jackson과 관련된 API를 제공해서 우리가 코드를 직접 작성해서 JSON 데이터를 처리하지 않아도 된다고 함 external libraries 에 jackson이라는 라이브러리가 자동으로 추가되어있음 따로 dependencies에 추가하지 않아도 이미 사용하고 있음 스프링에서 처리되는거 이외에도 직접 코드를 사용해서 JSON 형태로 바꾼다거나 JSON 형태로 넘어온 Object를 바꿔줘야 하는 경우가 종종 생김 test→ JacksonTest 만듦 package com.sparta.springmvc; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.Ob.. 2023. 11. 6. 이전 1 2 3 4 5 6 다음