로깅 라이브러링 - 스브링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함되고, 이는 기본적으로 SLF4J와 Logback를 사용한다. 지금 보니까 log4j 포함되어 있다 * 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다 쉽게 이야기해서 SLF4J는 인터페이스, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다 (실무에서는 Logback 많이 쓴다함) package hello.springmvc.basic; import lombok.extern.slf4j.Slf4j; import org.slf4j.Lo..
- 드디어 스프링으로 변경해보기 AppConfig.java package com.hello.core; import com.hello.core.Order.OrderService; import com.hello.core.Order.OrderServiceImpl; import com.hello.core.discount.DiscountPolicy; import com.hello.core.discount.RateDiscountPolicy; import com.hello.core.member.MemberRepository; import com.hello.core.member.MemberService; import com.hello.core.member.MemberServiceImpl; import com.hello..
- AppConfig.java를 추가하여 관심사 분리 / 이것도 순수 자바로만 구현 - 기존 MemberServiceImpl.java, OrderServiceImpl.java 에서는 인터페이스와 구현체 모두 의존하고 있어 DIP를 위반하고 있다 문제 : FixDiscountPolicy를 RateDiscountPolicy로 변경하는 순간 OrderServiceImpl의 소스 코드도 변경해야하는 번거로움이 있음 해결 : 이를 분리하기 위해 AppConfig를 만들어 수정 AppConfig.java / 애플리케이션 전체를 구성하기 위해 구현 객체를 생성하고 연결하는 책임을 가지는 별도의 설정 클래스 package com.hello.core; import com.hello.core.Order.OrderServi..
- 회원 도메인에 이어서 주문, 할인 / 이것도 순수 자바로만 구현했을때 DiscountPolicy.interface / 할인대상금액 package com.hello.core.discount; import com.hello.core.member.Member; public interface DiscountPolicy { int discount(Member member, int price); } FixDiscountPolicy.java / 할인대상금액 인터페이스 구현 package com.hello.core.discount; import com.hello.core.discount.DiscountPolicy; import com.hello.core.member.Grade; import com.hello.cor..
강의 : 인프런 스프링 핵심 원리 - 기본편 - 인텔리제이 처음 써 봄 - java11 - 프로젝트는 start.spring.io에서 생성(압축해제-> build.gradle 오픈) 회원 도메인 / 순수 자바로만 구현했을 때(spring x) Grade.enum / 회원등급 package hello.core.member; public enum Grade { BASIC, VIP } - enum 참고 : itmining.tistory.com/149 , www.tcpschool.com/java/java_api_enum Member.java / 회원 - id, 이름, 등급 package hello.core.member; public class Member { private Long id; private Stri..
회원 관리 예제 - 웹 MVC 개발 홈 화면 추가 (HomeController 추가) package hello.hellospring.controller; import hello.hellospring.domain.Member; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller public class HomeController { @GetMapping("/") public String home(){ return "home"; } } res..
회원관리예제 회원 객체 package hello.hellospring.domain; public class Member { private String name; private Long id; public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } } - id, name(이때 id는 시퀀스고 name은 사용자가 등록한 값) package hello.hellospring.repository; import hello.hellospring.domain.Me..
start.spring.io : 스프링 프로젝트 알아서 만들어줌 - 과거에는 Marven, 요즘은 Gradle로 많이 한다 - Marven vs Gradle -> bkim.tistory.com/13 - Spring Boot : snapshot이나 m3가 안붙은 최신형으로 쓰는게 좋음 - Dependencies : 어떤 라이브러리를 땡겨서 쓸거냐 - 선택완료 후 다운로드 -> 압축풀기 - 인텔리제이에서 오픈할때 build.gradle 오픈 - resources : xml, 프로퍼티, html 파일 등등(자바파일 제외한것) * 스프링 부트가 제공하는 Welcome Page 기능 - static/index.html 을 올려두면 Welcome page 기능을 제공한다. thymeleaf 템플릿 엔진 동작 확인 ..
DI Annotation예제 - 이클립스 사용- xml파일 대신 자바로ㅇㅇ- 강사는 그닥 추천하는 방법은 아니라고 한다 package com.javalec.ex; import java.util.ArrayList; public class Student { private String name; private int age; private ArrayList hobbys; private double height; private double weight; public Student(String name, int age, ArrayList hobbys) { this.name = name; this.age = age; this.hobbys = hobbys; } public String getName() { retur..
DI예제 3 - 이클립스 사용- DI : Dependency Injection의 약자, 의존주입- 인터페이스 package com.javalec.ex; public interface Pencil { public void use();} - 클래스 ㄴㄴ 인터페이스로 Pencil package com.javalec.ex; public class Pencil4B implements Pencil { @Override public void use() { System.out.println("4B 연필을 사용한다"); }} package com.javalec.ex; public class Pencil6B implements Pencil { @Override public void use() { System.out.pri..
- Total
- Today
- Yesterday