728x90

스프링프레임워크 17

[Java] 디스패치 서블릿 DispatcherServlet이란?

Dispatcher-Servlet(디스패처 서블릿) 이란? 디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있다. 그렇기 때문에 Dispatcher-Servlet은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있다. 이 과정을 이해하기전에 앞서 클라이언트로부터 어떠한 요청이 들어오게되면 톰캣과 같은 서블릿 컨테이너가 요청을 받게 된다. 그리고 이 모든 요청을 프론트 컨트롤러인 디스패치 서블릿이 가장 먼저 받게 된다. 그러면 디스패치 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야하는 컨트롤러를 찾아서 작업을 위임하게 된다. 여기서 프론트 컨트롤러는 주로 서블릿 컨테이너의 ..

JAVA 2022.04.11

[Spring] IoC, DI, 컨테이너

IoC (Inversion of Control) - 제어의 역전 - 프로그램의 제어 흐름을 개발자가 결정하는 것이 아니라, 외부에서 결정을 하는 것. 여기서의 흐름은 메소드나 객체의 호출을 의미. - 객체를 개발자가 Test test = new Test(); 이런식으로 만드는것이 아니라 스프링이 스스로 객체를 생성해서 필요한곳에 사용 할 수 있게 해준다. -> 기존의 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행을 했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다는 말씀. 프로그램의 제어 흐름을 직접적으로 하는 것이 아닌 외부에서 관리하는 것을 우리는 제어의 역전! 이라고 부른다. ※ 프레임워크 vs 라이브러리 - 프레임워크는 내가 작성한 ..

JAVA 2021.10.19

[Java] Junit 실행순서

[Juni5의 실행순서] 출처 : https://www.softwaretestinghelp.com/junit-annotations-tutorial public class OrderServiceTest { MemberService memberService; OrderService orderService; @BeforeEach public void beforeEach() { AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); orderService = appConfig.orderService(); Test Class를 잘 살펴보면 @BeforeEach 애너테이션이 붙은 beforeEach 메서드가 있다. 이는 Te..

JAVA 2021.07.28

[Java]Cannot create PoolableConnectionFactory

스프링에서 db에 접속하는 방법 1. JDBC만을 이용한 접속 이 경우에는 pom.xml를 이용하여 jdbc 작성을 위해 driver를 다운로드 2. Spring에서 datasource를 정의하고 이를 통한 접속 이 경우에 pom.xml과 root-context.xml이 사용 혹은 context-datasource 3. Mybatis를 이용한 접속 - 2번과 사용하는 파일은 똑같지만 sqlSessionFactory 라는 Mybatis 이용시 필요한 객체를 사용하여 db에 접속하는 방법

JAVA 2021.07.27

[Java] Spring 토비의 스프링

정리 - 예외를 잡아서 아무런 조취를 취하지 않거나 의미 없는 throws 선언을 남발하는 것은 위험. - 예외는 복구하거나 예외처리 오브젝트로 의도적으로 전달하거나 적절한 예외로 전환 - 좀 더 의미 있는 예외로 변경하거나, 불필요한 catch/throws를 피하기 위해 런타임 예외로 포장하는 두 가지 방법의 예외 전환 - 복구 할 수 없는 예외는 가능한 빨리 런타임 예외로 전환하는것이 바람직 - 애플리케이션의 로직을 담기 위한 예외는 체크 예외로 만듬 - JDBC의 SQLException은 대부분 복구 할 수 없는 예외이므로 런타임 예외로 포장해야함 - SQLException의 에러코드는 DB에 종속되기 때문에 DB에 독립적인 예외로 전환될 필요가 있음 - 스프링은 DataAccessException..

JAVA 2021.07.26

[Spring] 3장 템플릿

리소스 반환과 close() Connection이나 PreparedStatement에는 close()메소드가 있음. 이름 그대로 열린것을 닫는 역할인데 보통 리소스를 반환하는 의미로 이해하는것이 좋다. Connection과 PreparedStatement는 보통 풀(pool) 방식으로 운영. 미리 정해진 풀 안에 제한된 수의 리소스(Connection, Statement)를 만들어 두고 필요할 때 이를 할당하고, 반환하면 다시 풀에 넣는 방식으로 운영. 요청이 매우 많은 서버환경에서는 매번 새로운 리소스를 생성하는 대신 풀에 미리 만들어둔 리소스를 돌려가며 사용하는편이 훨씬 유리함. 대신 사용한 리소스는 빠르게 반환해야한다. 그렇지 않으면 풀에 있는 리소스가 고갈되고 결국 문제가 발생하게 된다. clos..

JAVA 2021.06.24

[Spring] 2장 테스트

단위 테스트(unit test) : 작은 단위의 코드에 대해 테스트를 수행한 것. 단위 테스트를 하는 이유? 개발자가 설계하고 만든 코드가 원래 의도한 대로 동작하는지 개발자 스스로 빨리 확인하기 위해서 getUserFailure() 테스트 코드에 나타난 기능 단계 내용 코드 조건 어떤 조건을 가지고 가져올 사용자 정보가 존재하지 않는 경우에 dao.deleteAll(); assertThat(dao.getCount(), is(0)); 행위 무엇을 할 때 존재하지 않는 id로 get()을 실행하면 get("unknown_id"); 결과 어떤 결과가 나온다 특별한 예외가 던져진다 @Test(expected = EmptyResultDataAccessException.class) 테스트 주도 개발(TDD, Te..

JAVA 2021.06.14

[Spring] 1장 오브젝트와 의존관계(4)

[Spring] 1장 오브젝트와 의존관계(3) [Spring] 1장 오브젝트와 의존관계(2) [Spring] 1장 오브젝트와 의존관계(1) 스프링이란? 개발에 사용되는 애플리케이션 프레임워크. 개발을 빠르고 효율적으로 할 수 있도록 틀과 프로그래밍 모델, 기 itkjspo56.tistory.com public class UserDao{ private ConnectionMaker connectionMaker; public UserDao(ConnectionMaker connectionMaker){ this.connectionMaker = connectionMaker; } ... } DI컨테이너는 자신이 결정한 의존관계를 맺어줄 클래스의 오브젝트를 만들고 이 생성자의 파라미터로 오브젝트 레퍼런스를 전달. 바로..

JAVA 2021.06.10

[Spring] 1장 오브젝트와 의존관계(3)

[Spring] 1장 오브젝트와 의존관계(2) [Spring] 1장 오브젝트와 의존관계(1) 스프링이란? 개발에 사용되는 애플리케이션 프레임워크. 개발을 빠르고 효율적으로 할 수 있도록 틀과 프로그래밍 모델, 기술 API 등을 제공 1) 애플리케이션 itkjspo56.tistory.com [제어의 역전(IoC)] public class DaoFactory { public UserDao usreDao() { ConnectionMaker connectionMaker = new DConnectionMaker(); UserDao userDao = new UserDao(connectionMaker); //팩토리의 메소드는 UserDao 타입의 오브젝트를 어떻게 만들고, 어떻게 준비시킬지 결정 return user..

JAVA 2021.06.09
728x90