[토비의스프링] 1.5 스프링의 IoC
·
Framework/Spring
스프링의 핵심스프링의 핵심은 빈 팩토리, 애플리케이션 컨텍스트 라고 불리는 것에서 담당한다. 빈 Bean스프링이 제어권을 가지고 직접 만들고, 관계를 부여하는 오브젝트오브젝트 단위의 애플리케이션 컴포넌트스프링 컨테이너가 생성과 관계 설정, 사용 등을 제어하는 제어의 역전이 적용된 오브젝트 빈 팩토리와 애플리케이션 컨텍스트빈 팩토리빈의 생성과 관계 설정 같은 제어 담당 IoC오브젝트. 보통 빈 팩토리보다 애플리케이션 컨텍스트를 주로 사용한다.애플리케이션 컨텍스트IoC방식을 따라 만들어진 빈 팩토리. 빈 생성, 관계 설정 등 제어 작업 총괄빈 팩토리는 빈을 생성하고 관계를 설정하는 IoC기본 기능을 가지고 있다면, 애플리케이션 컨텍스트는 이 빈 팩토리의 확장형으로, 빈 팩토리의 모든 기능을 포함하여 추가 기..
[토비의스프링] 1.4 제어의 역전(IoC)
·
Framework/Spring
[1.3 DAO의 확장] 마지막 단계에서 만든 UserDaoTest는 클라이언트 역할을 하는 클래스로 생성하였다.다른 책임이나 관심사를 독립적으로 분리시키며서 DAO를 만들어왔지만, 결국 클라이언트 역할을 하는 이 테스트 클래스에서 '어떤 DB커넥션을 가져올지 결정하는 책임'을 맡게 되었다.  다시 이 클라이언트를 분리시키는 작업을 해보겠다. 여기서 팩토리(Factory)라는 개념이 등장한다. 팩토리(Factory)객체의 생성 방법을 결정하고, 객체를 돌려주는 역할을 한다.오브젝트를 생성하는 것과, 생성된 오브젝트를 사용하는 것을 분리하기 위한 목적으로 사용한다. 클라이언트 UserDaoTest 속 UserDAO, ConnectionMaker의 생성과정을 새로운 팩토리로 옮기고,클라이언트에서 팩토리에서 ..
[토비의스프링] 1.3 DAO의 확장
·
Framework/Spring
[1.2 DAO의 분리]에서는 DB 커넥션을 가져오는 코드를 메소드로 따로 분리하였고, 이 메소드를 추상메소드로 만들어 UserDAO를 다른 사용자가 상속받아 사용할 수 있게 하였다. 상속을 통해서 만들면 다중 상속 문제가 발생할 수 있으며, 슈퍼클래스에 제약을 걸어야 하는 필요성이 생기거나, 메소드가 매 클래스마다 중복 생성이 되는 단점이 있다. '상속'을 통해 생기는 문제점으로 상속을 하지 않으면 해결되지 않을까?추상 메소드로 분리해둔 DB커넥션을 독립적인 클래스로 만들어 나누어 보겠다.  package springbook.user.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;publi..
[토비의스프링] 1.2 DAO의 분리
·
Framework/Spring
1.1 에 작성한 DAO는 초난감 코드로 동작은 제대로 작동하지만 효율적인 코드는 아니다.add()와 get()에서 모두 Connection을 가져오는 중복된 코드가 존재한다.일단 이 중복된 코드를 따로 구현하여 Connection을 동작하는 getConnection 메소드를 생성할 수 있다. public void add(User user) throws ClassNotFoundException, SQLException{ Connection c = getConnection(); ... } public User get(String id) throws ClassNotFoundException, SQLException{ Connection c = getConnection()..
[토비의스프링] 1.1 초난감 DAO
·
Framework/Spring
[토비의스프링 3.1] 첫 단계 '1.1 초난감 DAO'를 통해 DAO의 의미와 간단한 이용법을 알아보았다.DAO는 Database Access Obejct로 말 그대로 데이터베이스를 조작하거나 조회하는 기능의 오브젝트이다.데이터베이스의 가장 기본적인 CRUD를 이 DAO를 통해 조작한다.CRUD는 Create, Read, Update, Delete로 데이터를 생성, 사용, 수정, 삭제 동작의 약자이다. 본 코드를 실습해보기 전 JDBC가 동작하기 위해 사용하는 클래스는 아래와 같다.Connection: 데이터베이스 연결Statement · PreparedStatement: SQL 쿼리문을 담아서 실행ResultSet: 실행 결과를 옮겨 오브젝트에 저장  MySQL에서 테이블을 생성한다.CREATE DA..
[Spring] HttpServlet에 대해
·
Framework/Spring
HttpServlethttp프로토콜에 특화된 기능을 처리하기 위한 용도  요청 Request를 처리해서 응답 Response하는 목적으로 설계되었다.httpServlet을 상속받은 객체는 WAS 내부에서 자동으로 객체가 생성, 관리 된다.멀티스레드에 의해 동시 실행될 수 있도록 처리할 수 있다. 객체 자동 관리서블릿은 웹이라는 특수한 환경으로 인해 개발자가 직접 객체를 생성하는 대신 톰캣에서 객체를 관리한다.서블릿 관점에서 톰캣은 서블릿 컨테이너로 볼 수 있다.  처리 과정서블릿이 처리해야 하는 특정 경로 호출경로에 맞는 서블릿 클래스를 로딩하고 개체를 생성 → init()메서드 실행요청 정보를 분석해 쿼리 스트링의 파라미터를 HttpServletRequest로 전달 받는다.응답에 필요한 기능은 Http..
[Spring] Spring MVC 구조 알아보기
·
Framework/Spring
Model View Controller어플리케이션 구성 시 요소를 세가지 역할로 구분해 서로 영향을 주지 않고 수정 가능한 MVC구조  Model비즈니스 로직을 담당하며, 데이터를 처리하는 것. 데이터베이스와 연동하는 DAO와 데이터 구조의 DO로 구성되어 있다. 데이터베이스에서 처리하여 데이터를 가공한 뒤 뷰로 전달한다. View데이터를 별도 보관하지 않고 화면에 보여주는 자체 영역 Controller모델과 뷰 사이 다리 역할을 하는 컨트롤러는 입력에 대한 모델과 뷰의 업데이트 로직이 포함되어 있다. 사용자의 요청을 받는 역할은 이 컨트롤러에서 진행된다. 각 영역이 독립적으로 구성되어 의존성이 낮아진다. 개발자 간 협업이 원활하지만, 데이터 처리가 커지면 컨트롤러가 해야 할 일이 많아져 역할 분담이 필..
[Spring] HTTP로 요청 주고 받는 방법 GET, POST
·
Framework/Spring
서버와 클라이언트가 정보를 주고 받을 때 HTTP 프로토콜을 사용 한다. 클라이언트에서 서버로 이동은 요청 request라고 하며, 서버에서 클라이언트로 이동은 응답 response라고 한다. 서버가 응답을 보낼 때 데이터 형태에 따라 다르게 사용하는데, 정적 데이터를 전송하는 건 '웹 서버 Web Server'라고 하고 동적인 데이터를 보낼 때는 '웹 애플리케이션 서버 Web Application Server: WAS'라고 한다.  서버에 요청을 할 때 '어떤 목적으로 정보를 요청'하는 지에 따라 GET과 POST방식으로 나뉜다. GET직접 원하는 데이터를 적거나 링크를 클릭하여 정보를 요청한다. 주로 특정한 정보를 조회하는 용도로 GET을 사용하며 URL 뒤에 값을 적기 때문에 정보 노출에 위험이 있..