목록스프링 (17)
개발새발

스프링 컨테이너 의존관계 주입을 대신 객체를 생성하고 관리하면서 의존관계를 연결해주는 것 스프링 프레임워크도 객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너가 있는데, 그것이 바로 스프링 컨테이너( = IoC 컨테이너, DI 컨테이너, 어샘블러, 오브젝트 팩토리...등) 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다 객체관리 주체가 프레임워크(Container)가 되기 때문에 개발자는 로직에 집중할 수 있는 장점이 있다 IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리 POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다 개발자는 비즈니스 로직에 집중할 수 있다 객체..
DI 사용 장점 객체 간 결합도를 낮춘다 유연한 코드 작성 가능 가독성 증진 코드 중복 방지 유지보수가 용이 기존에는 개발자가 직접 객체 생성과 소멸을 제어했는데 DI로 인해 객체 생성과 소멸 등 클래스간 의존관계를 스프링 컨테이너가 제어 DI는 객체의 생성, 소멸, 의존 관계를 개발자가 직접 설정하는 것이 아니라 XML이나 애너테이션을 통해 스프링 프레임워크가 제어 기존에는 개발자가 직접 객체를 생성해줬던 반면에 스프링 프레임워크에서는 객체의 제어를 스프링이 직접 담당해주는 IoC 특징을 가진다 DI를 하는 방식 Field Injection(필드 주입) Setter Injection(수정자 주입) Constructor Injection(생성자 주입) (*추천//Spring에서도 권장하는 방식) Fiel..

- 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻으로, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 합니다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면서 영속성컨텍스트에 엔티티를 보관하고 관리합니다 em.persist(member); 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미 영속성 컨텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. EntityManager EntityManager는 영속성 컨텍스트 내에서 Entity들을 관리하고 있다. EntityManager는 JPA에서 제공하는 interface로 spring bean으로 등록되어 있어 A..
- Spring은 만들어질 때(1.0)부터 에러 처리를 위한 BasicErrorController를 구현해두었고, 스프링 부트는 예외가 발생하면 기본적으로 /error로 에러 요청을 다시 전달하도록 WAS 설정을 해두었다. 그래서 별도의 설정이 없다면 예외 발생 시에 BasicErrorController로 에러 처리 요청이 전달된다. 참고로 이는 스프링 부트의 WebMvcAutoConfiguration를 통해 자동 설정이 되는 WAS의 설정이다. 일반적인 흐름 WAS(톰캣) -> 필터 -> 디스패처 서블릿 -> 인터셉터 -> 컨트롤러 컨트롤러 하위에서 예외가 발생하였을 때, 별도의 예외 처리를 하지 않으면 WAS까지 에러가 전달된다. 그러면 WAS는 애플리케이션에서 처리를 못하는 예외라 판단하고 다음 순..

- 클라이언트 요청을 처리하고, 그 결과를 반환하느 웹 프로그래밍 기술 - 클라이언트가 요청을 하면 그에 대한 결과를 다시 전송해주는 역할을 자바 프로그램이 하는 것 Servlet 동작 방식 사용자가 URL(ex. localhost:8080/hello)입력하면 HTTP Request가 Servlet Container로 전송 요청을 전송받은 Servlet Container 는 HttpRequest, HttpResponse 객체를 생성 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾는다. 여기서는 helloServlet을 찾게 된다 service 메서드를 호출한 후 클라이언트의 GET, POST 여부에 따라 doGet(), doPost()를 호출 동적페이지를 생성한 후 HttpServletRespo..

spring security란 spring기반의 애플리케이션의 보안(인증, 인가, 권한등)을 담당하는 스프링 하위 프레임워크 '인증', '권한'에 대한 부분을 Filter 흐름에 따라 처리 Filter는 Dispatcher Servlert로 가기전에 적용되므로 가장 먼저 URL요청을 받음 사용자가 Username과 Password를 통해 인증을 요청 AuthenticationFilter의 구현체인 UsernamePasswordAuthenticationFilter는 전달받은 Username과 Password를 가지고 UsernamePasswordAuthenticationToken을 생성 생성된 Authentication을 AuthenticationManager에 전달 AuthenticationManager..

트랜잭션은 여러개의 작업들을 하나의 그룹으로 묶어서 처리하는 처리 단위 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 최도 산위 목적 데이터베이스 서버에 여러 개의 클라이언트가 동시에 엑세스 하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있느 경우 등 데이터 부정합을 방지하고자 사용 트랜잭션에는 4가지의 특징 원자성 원자성은 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나 All or Nothing을 생각 일관성 일관성은 트랜잭션 작업 처리의 결과가 항상 일관되어야 한다 즉, 데이터 타입이 반환 후와 전이 항상 동일해야 한다 독립성 독립성은 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 마찬가지로 독립적임을 의미 즉, 각각의 트랜잭션은 독립적이라 서로 간섭이 불가능하다 지속성 지..
ORM 이란? Object Relational Mapping(객체-관계-매핑)의 약자 객체와 데이터베이스의 관계를 매핑해주는 도구 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 도구 프로그래밍 언어의 객체와 관계형 데이터베이스 사이의 중계자(통역자) 역할 MVC 패턴에서 모델(Model)을 기술하는 도구 객체와 모델 사이의 관계를 기술하는 도구 ORM의 장단점 장점 객체 지향적인 코드로 인해 더 직관적이고, 비즈니스 로직에 더 집중할 수 있게 도와준다 ORM을 이용하면 SQL 쿼리가 아닌 직관적인 코드로 데이터를 조작할 수 있어 개발자가 객체 지향 프로그래밍하는 데 집중할 수 있도록 도와준다 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어든다 각종 객체에..
REST 는 "REpresentational State Transfer"의 약자로 주어진 시점에 두 시스템 간의 새로운 통신 방식으로, 시스템 중 하나를 'REST 클라이언트'라고 하고 다른 시스템을 'REST 서버'라고 한다 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고 HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미 REST 클라이언트란? REST 클라이언트는 시스템 또는 서비스 공급자가 통신을 위해 노출하는 REST 서비스 API를 호출하는 방법 또는 도구 예를 들어 API가 Google에서 실시간 교통 정보를 얻기 위해 Google 교통 ..