스프링

· 스프링
MVC 패턴이란?사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 사용되는 디자인 패턴이다.소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있다.애플리케이션의 개발 영역을 MVC (Model, View, Controller)로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식이다. 이런 관심사 분리는 더 나은 유지보수성을 제공한다. Model : 데이터와 비즈니스 로직을 관리클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 한다. 처리한 데이터를 클라이언트에게 응답해야 하는데, 이 때 클라이언트에게 응답해주는 데이터를 Model이라고 한다.View : 레이아웃과 화면 처리Model을 이용하여 화면에 보이는 리소스(Resource)를 제공하는 역할을 한다.ex) HTML 페이..
· 스프링
컴포넌트 스캔(Component Scan) 스프링 빈을 등록하기 위해 @Bean 어노테이션을 붙혀주거나 이라는 XML 태그를 붙혀서 직접 설정 정보에 스프링 빈을 등록했다. 하지만 이런 방식으로 계속 할 경우 빈이 엄청나게 많아지고 관리가 힘들어진다. 스프링은 이런 상황 때문에 컴포넌트 스캔을 제공한다. @ComponentScan이라는 어노테이션을 통해서 해당 기능을 사용한다. 먼저 ComponetScan을 사용하기 전 코드를 살펴보자. 빈 수동 등록 빈 설정 클래스 @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepo..
· 스프링
Spring Container 스프링 컨테이너는 스프링 프레임워크의 핵심 컴포넌트이다. 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링에서는 자바 객체를 빈(Bean)이라 한다. 즉, 내부에 존재하는 빈의 생명주기를 관리(빈의 생성, 관리, 제거 등)하며, 생성된 빈에게 추가적인 기능을 제공하는 것이다. 스프링 컨테이너의 종류 스프링 컨테이너는 Beanfactory와 ApplicationContext 두 종류의 인터페이스로 구현되어 있다. 빈 팩토리는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트이고, 빈 팩토리를 좀 더 확장한 것이 애플리케이션 컨텍스트이다. BeanFactory 스프링 컨테이너 최상위 인터페이스이다. 빈을 등록, 생성, 조회 등..
· 스프링
스프링 시큐리티를 처음 빌드하고나서 페이지에 접근을 하게되면 이러한 로그인 창이 뜬다. 시큐리티를 사용하기 전에는 뜨지 않았고 내가 따로 설정하지 않았는데 갑자기 뜨는 이유가 뭘까? 스프링 시큐리티에서는 보안 설정을 쉽게 사용할 수 있도록 여러 가지 기본값을 제공합니다. 그 중에서 직접 재정의를 하지 않으면 SpringBootWebSecurityConfiguration 클래스에 있는 defaultSecurityFilterChain의 기본 설정을 따라갑니다. (SpringBootWebSecurityConfiguration 클래스는 스프링 부트에서 자동으로 제공되는 클래스 중 하나입니다.) 첫 줄을 보면 http.authorizeHttpRequests((requests) -> { ((AuthorizeHttp..
· 스프링
흐름을 보기 전에 서블릿과 필터를 알아보자 1. 서블릿 JAVA 애플리케이션은 요청을 받은 후 그것을 HTTP 프로토콜로 전송한다. 브라우저들은 HTTP 프로토콜만 이해할 수 있기 때문이다. 따라서 HTTP 프로토콜을 이용해서 브라우저들은 백엔드 웹 애플리케이션에 요청을 보낼 수 있다. JAVA 애플리케이션은 HTTP 프로토콜을 이해할 수 없기 때문에 JAVA 코드와 브라우저 사이에 중개자가 존재하는데 이 중개자를 서블릿 컨테이너 or 웹 서버라고 합니다. 중재자 즉, 서블릿 컨테이너가 할 일은 브라우저로 부터 받은 HTTP 메시지를 ServletRequest object 로 변환합니다. 그리고 동일한 object를 웹 애플리케이션에 사용하고 있는 JAVA 코드 프레임워크에도 주어집니다. 브라우저에 다시..
· 스프링
DI(Dependency Injection) DI는 Dependency Injection의 약자로 의존 주입 이라고 한다. DI를 이해하려면 먼저 의존(dependency)이 뭔지 알아야 한다. 여기서 말하는 의존이란 객체간의 의존을 의미한다. 회원 가입을 처리하는 기능을 구현할 때 요구사항으로 같은 회원이 아니라면 다른 이메일을 써야 한다고 한다. 이때 비지니스 로직을 담당하는 Service 클래스에서 DB에 직접 접근하는 DAO 클래스에 사용하여 selectByEmail()같은 메서드를 사용하여 DB에 동일한 이메일을 가진 회원이 있는지 확인한다. 여기서 Service 클래스가 DB처리를 위해 DAO 클래스의 메서드를 사용한다는 점인데, 이렇게 한 클래스가 다른 클래스의 메서드를 실행할 때 의존한다고..
· 스프링
N + 1 문제란 연관 관계가 설정된 엔티티를 조회할 경우 조회된 데이터의 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1문제라고 한다. 실제 발생하는 경우를 살펴보자. package com.test.test; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter @NoArgsConstructor public class Board { @Id @GeneratedValue(strategy = Gene..
· 스프링
Springboot + JPA 활용해 과제를 진행하던중 entity를 화면 단에 직접적으로 노출하면 안 된다는 영한 님의 강의 내용이 생각이 났다. 그때는 그냥 강의를 듣고 열심히 코드를 따라 치기만 했지 왜지? 라는 의문점은 다음으로 넘기고 이번에 과제 도중 그런 상황이 생겨서 한 번 정리해보자. 우선 entity와 dto를 알아보자. entity란 실제 DB 테이블과 매핑되는 핵심 클래스. DB 테이블에 존재하는 칼럼들을 필드로 가지는 객체. dto란 DTO(Data Transfer Object) 계층(Layer)간 데이터 교환을 위해 사용되는 객체 DB에서 데이터를 가져와 Service 및 Controller 등으로 전송할 때 사용하는 객체 불필요한 데이터 노출 Entity를 데이터 request ..
백수왕
'스프링' 카테고리의 글 목록