Spring7 MVC 패턴 MVC(Model View Controller) 하나의 서블릿이나 JSP로 처리하던 것을 컨트롤러와 뷰의 영역으로 역할을 나눈것 - 컨트롤러(Controller) HTTP 요청을 받아 파라미터를 검증하고 , 비즈니스 로직을 실행 , 뷰에 전달할 결과 데이터를 조회해서 모델에 담아준다. - 모델(Model) 뷰에 출력할 데이터를 담아둔다. 비즈니스 로직이나 데이터 접근을 알 필요는 없고 , 화면에 렌더링 하는 일에 집중할 수 있다. - 뷰(View) 모델에 담겨있는 데이터를 사용하여 화면을 그림 Spring 2022. 12. 28. AOP , DI , IOC IOC(Inversion Of Control) 제어의 역전 일반적인 Java 객체를 new로 생성하여 개발자가 관리 하는 것이 아닌 Spring Container에 모두 맡기는 것 즉, 개발자에서 -> 프레임워크로 제어의 객체 관리의 권함이 넘어 갔음 으로 ‘제어의 역전’ 이라고 함 DI(Dependency Injection) 의존성 주입 의존성으로부터 격리시켜 코드 테스트에 용이하다. DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트 가능하다. 코드를 확장하거나 변경 할 때 영향을 최소화 한다. 순환참조를 막을 수 있다. AOP(Aspect Oriented Programming) 관점지향 프로그램 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을.. Spring 2022. 12. 20. QUERYDSL 이란 - QUERYDSL 정적 타입을 이용해서 SQL등의 쿼리를 생성해주는 프레임 워크 동적인 쿼리 작성이 편리하다 쿼리 작성시 제약 조건 등을 메서드 추출을 통해 재사용할 수 있다. build.gradle implementation "com.querydsl:querydsl-jpa" implementation "com.querydsl:querydsl-core" implementation "com.querydsl:querydsl-collections" annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.ann.. Spring 2022. 12. 20. WebClient - WebClient RestTemplate를 대체하는 Http클라이언트이다. (현재 RestTemplate 보다는 webClient를 권장함) 기존의 동기 API를 제공할 뿐만 아니라 , 논블로킹 및 비동기 접근 방식을 원해서 효율적인 통신 가능 WebClient는 요청을 나타내고 전송하게 해주는 빌더 방식의 인터페이스를 사용 - 싱글 스레드 방식 - Non-Blocking방식(Application이 요청을 하고 바로 제어권을 받음 , 다른 로직이 실행 됨) - JSON,XML을 쉽게 응답 받음 private static WebClient webClient = WebClient.create(); final String uri = UriComponentsBuilder.fromUriString("주소") .. Spring 2022. 12. 20. annotation @Getter lombok 의 라이브러리를 추가 하여 Getter를 자동으로 생성 해준다. @Setter lombok 의 라이브러리를 추가 하여 Setter를 자동으로 생성 해준다. @ToString lombok 의 라이브러리를 추가 하여 toString을 string 형식으로 출력 해준다. @Table 맵핑할 테이블을 지정해준다. @Entity JPA가 관리해준다. @Id 객체의 PK를 의미 한다. @GeneratedValue JPA에서 Entity의 Primary Key를 생성해 준다. @Column DB 테이블 컬럼을 맵핑한다. @OneToMany 1:N 관계를 맺기 위해서 사용 @ManyToOne N:1 관계를 맺기 위해서 사용 fetchType EAGER (한번에 호출 ) fetchType LA.. Spring 2022. 12. 20. Singleton Singleton 이란 클래스의 인스턴스(객체)가 딱 1개만 생성되는것을 보장하는 디자인 패턴이다. 생성자를 private로 막아 개발자가 new를 하지 못하게 만드는 패턴 public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } public void call() { System.out.println("call"); } } Singleton 의 문제점 구현하는 코드 자체가 많이 필요하다. 테스트하기가 어렵다. Spring 2022. 12. 20. 객체 지향 설계의 5가지 원칙 - SRP (Single responsibility principle) 단일 책임 원칙 클래스 하나는 하나의 책임만 가져야 한다. - OCP (Open/Closed principle) 개방-폐쇄 원칙 변경에는 닫혀있어야하고 , 확장에는 열려있어야 한다. - LSP(Liskov substitution principle) 리스코프 치환 원칙 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야 한다. - ISP (Interface segregation principle) 인터페이스 분리 원칙 하나의 일반적인 인터페이스보다 여러개의 구체적인 인터페이스가 낫다. - DIP (Dependency inversion principle) 의존 관계 역전 원칙 추상화에 의존해야하지 구체화에 .. Spring 2022. 12. 19. 이전 1 다음