컴퓨터 프로그래밍/Spring 46

[Spring] Ioc (제어의 역전) 와 DI (의존성 주입)

IoC, DI는 객체지향의 SOLID 원칙 그리고 GoF 의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴 강하게 결합되어 있는 Consumer 와 Chicken코드는 정상적으로 작동하겠지만, Consumer 가 chicken 이 아니라 pizza 가 먹고싶다면 코드 수정이 불가피함 약하게 결합되어있는 Consumer 와 Chicken, Pizzainterface 다형성의 원리를 사용해서 고객이 어떤 음식을 요구하더라도 쉽게 대처할 수 있음.그럼 여기에 어떻게 주입할까?1. 필드에 직접 주입2. 메서드를 통한 주입3. 생성자를 통한 주입 필드에 직접 주입Food를 Consumer에 포함 시키고 Food에 필요한 객체를 주입받아 사용 메서드를 통한 주입set 메서드를 사용하여 필요한 객체를 주입받아 사용 ..

[Spring] CRUD

DTO(Data Transfer Object) 데이터 전송 및 이동을 위해 생성되는 객체Client  에서 보내오는 데이터를 객체로 처리할 때 사용서버의 계층간의 이동에도 사용DB 와의 소통을 담당하는 java 클래스를 그대로 Client 에 반환하는 것이 아니라 DTO 로 한 번 변환 후 반환할 때 사용( Request 의 데이터 처리 담당 객체명은 RequestDto, Response 할 때 사용되는 객체는 ResponseDto )CREATEClient 에 데이터를 반환하고 Client 의 요청 데이터를 받아줄 MemoResponseDto, MemoRequestDto 클래스 생성 지금은 DB 연결을 하지 않았기 때문에 메모 데이터를 저장할 컬렉션 생성 READUPDATEDELETE

[Spring] PathVariable, RequestParam, ModelAttribute, RequestBody

Client (브라우저) 에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보내는 방식에는 여러 방식이 있다. 아래의 hello-request-form.html 을 우선 불러왔다. @PathVariable서버에 보내려는 데이터를 URL 경로에 추가해서 보낼 수 있다.데이터를 받기 위해서는 /star/{name}/age/{age} 이처럼 URL 경로에서 데이터를 받고자 하는 위치의 경로에 {data} 중괄호를 사용(@PathVariable String name, @PathVariable int age)그리고 해당 요청 메서드 파라미터에 @PathVariable 애너테이션과 함께 {name} 중괄호에 선언한 변수명과 변수타입을 선언하면 해당 경로의 데이터를 받아옴@RequestParamform 태그 GET..

[Spring] 데이터를 Client 에 반환, Jackson 라이브러리

템플릿 엔진이 적용된 SpringBoot 에서 Controller 에서 문자열을 반환하면 templates 폴더에서 해당 문자열의 html 파일을 찾아서 반환해줌 따라서 html 파일이 아닌 JSON 데이터를 브라우저에 반환하려면 해당 메서드에 @ResponseBody 애너테이션을 추가해줘야함 1. 반환값 : StringJava는 JSON 타입을 지원하지 않기 때문에 JSON 형태의 String 타입으로 변환해서 사용해야 함 2. 반환값 : String 외 자바 클래스"자바 객체 → JSON 으로 변환"Spring 에서 자동으로 Java 의 객체를 JSON 으로 변환해줌@RestController 을 사용하면 @ResponseBody 를 전부 생략하고 해당 클래스 전체를 데이터를 전달하는 클래스로 만들 ..

[Spring] Controller, 정적 페이지와 동적 페이지

Controller 패턴이 적용되어있지 않았다면 위의 4가지 API 를 처리하기 위해 3개의 클래스를 만들어야했을 것 API 마다 파일을 만들 필요가 없음 유사한 성격의 API 를 하나의 Controller 로 관리( @RequestMapping 사용 ) 메서드 이름 내 마음대로 설정 가능 ( 클래스 내의 중복 메서드명 불가 )정적페이지의 기본은 static 폴더에 정적 페이지 hello.html 을 만들고 그냥 주소창에 /hello.html 로 접속시키면 바로 연결된다.이를 Controller 에서 연결시키고 싶다면implementation 'org.springframework.boot:spring-boot-starter-thymeleaf’해당 dependency를 주석 처리해야 테스트가 가능 thym..

[Spring] Gradle, Lombok

Gradle빌드 자동화 시스템우리가 작성한 Java 코드를 설정에 맞게 자동으로 Build 해줌소스 코드를 실행 가능한 결과물로 만드는 일련의 과정을 뜻함Gradle 을 사용해 간편하게 Java 소스 코드를 실행 가능한 jar 파일로 만들어줌Lombok자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메서드/ 생성자 등을 자동으로 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리 @Getter  @Setter @Setter, @Getter 롬복을 달아주면 자동으로 setter, getter 메소드가 생성된다.@NoArgsConstructor  @AllArgsConstructor@NoArgsConstructor 롬복은 기본생성자를,@AllArgsConstructor 롬복은 모든 필드를 파라미터로 ..