Spring

Spring

[Spring] Application Context와 XML설정파일 읽어들이기

1.Application Context -스프링 컨테이너의 핵심 인터페이스 org.springframework.context Interface ApplicationContext -다양한 인터페이스를 상속. 그중에서도 BeanFactory를 상속받는게 중요하다 org.springframework.beans.factory Interface BeanFactory 2.ApplicationContext를 구현하고 있는 대표적인 클래스 -CLASSPATH에서 XML설정파일을 읽어들여 동작한다. org.springframework.context.support Class ClassPathXmlApplicationContext 2.1 스프링 프레임워크의 핵심 모듈 -Core Container 부분이 가장 핵심이다. -G..

Spring

[Spring] Springd의 등장배경과 Bean

1.Spring 등장이유 1.1 EJB(Enterprise JavaBeans) 등장 과 문제점 그리고 스프링의 등장 1.1.2 EJB 등장 이유 -EJB는 애플리케이션 작성을 쉽게 해준다. -EJB는 선언적 프로그래밍 모델 -트랜잭션, 보안, 분산컴퓨팅을 쉽게 할 수 있게한다. -EJB를 구통시킬 수 있는 WAS 등장 *선언적 프로그래밍? 설정만 해놓으면 자동으로 작동 1.1.3 EJB의 후퇴와 Spring 등장 -EJB는 복잡하여 사용하기 불편함. -로드 존슨 -EJB의 복잡성 해결을 위해 스프링 등장 2.Bean? 2.1 Bean이란? -자바에서 인스턴스 생성: 프로그래머가 직접 인스턴스 생성 Book book = new Book(); -Bean은 컨테이너가 관리하는 객체. -객체의 생명주기를 컨테이..

Spring/Spring 프로젝트

[게시판 만들기] CRUD 흐름

CRUD를 수행하기 위해 기능별로 URL를 살펴보면 '/'이후 기능별로 URI가 다른 걸 확인할 수 있다. 메서드도 다른데 크게 GET과 POST로 메서드를 사용한다. 'GET'은 정보를 불러오는 데에 메서드로 쓰이고 'POST'는 정보를 입력하는데에 메서드가 쓰인다. 여기서 주목해야 할 점은 쓰기와 수정에서 GET,POST가 모두 쓰인다는 점이다. 쓰기와 수정은 공통적으로 데이터를 '입력하기 전'에는 게시물을 읽어와야하고 게시물을 '입력한 후'에는 수정된 게시물을 저장해야한다. 그래서 게시물을 읽어올 때는 'GET'을 사용하고 게시물을 저장할 때는 'POST'를 사용한다. 1.읽기(Read) ①게시판의 게시물(bno=533)을 누르게 되면 '/board/read?bno=533'을 'GET'요청하게 된다..

Spring/Spring DI와 AOP

[Spring DI와 AOP]@Transactional

1.TransactionManager 하나의 메서드는 하나의 Connection을 가진다. 하지만 하나의 메서드에 하나의 Connection을 가지면 중복된 메서드의 Connection은 개별 커넥션을 갖기 때문에 Tx가 안된다는 문제가 발생한다. 예를들어 UserDao의 deleteUser(100);를 실행하면 메서드에 해당하는 Connection이 commit되면서 100이라는 키를 가진 유저의 정보가 삭제될거다. 그런데 여기에 deleteUser(200);을 실행한 후 rollback을 해야하는 상황이 발생하면, 이미 deleteUser(100);이 실행된 Connection은 commit 되었기에 rollback이 되지 않는다. 이 문제를 해결하기 위해선 두 메서드의 Connection을 하나의 ..

Spring/SpringMVC

[Spring MVC] 계층의 분리

1. 3계층 Spring은 3계층으로 구분 할 수 있다. 사용자 요청을 받아 흐름을 제어하는 Presentation Layer, 비즈니스 로직을 담당하는Business Layer, 데이터 베이스에 접근하여 데이터 베이스를 다루는 Persistence Layer(Data Access Layer)로 계층을 분리 할 수 있다. UserHistoryDao 회원의 이력을 추가, 삭제, 수정 등 비즈니스 로직을 수행하는 역할이 필요하다. Persistence Layer인 UserDao는 단순히 DB테이블의 정보를 CRUD(Creadt, Remove, Update, Delete)하는 기능만 수행하기에 비즈니스 수행할 수 없다. 그래서 Presentation Layer인 RegisterController에게 UserH..

Spring/REST API와 Ajax

REST API와 Ajax

1. JSON? JSON(Java Script Object Notation)은 자바 스크립트 객체 표기법이다. JSON 이전에는 XML을 이용하여 데이터를 교환했다. 하지만 XML은 데이터보다 태그가 더 많고 복잡하여 효율성이 떨어졌다. 이 문제를 해결하기 위해 등장 한 것이 자바 스크립트로 객체를 표기한 JSON이다. {속성명1: 속성값1, 속성명2: 속성값2, ...} // 기본 [{속성명: 속성값, ...}, {속성명: 속성값, ...}, ...] // 객체 배열 {키1:{속성명: 속성값, ...}, 키2:{속성명: 속성값, ...}, ...} // Map 1-1 stringify()와 parse() JS객체를 서버로 전송하려면, 직렬화 즉, 객체를 문자열로 변환하여 저장하는 작업이 필요하다. 반대..

Spring/Spring DI와 AOP

[Spring DI와 AOP] Transaction, Commit, Rollback

1.Transaction? Transaction은 더이상 나눌 수 없는 작업의 단위다. Transaction대신 별칭 Tx로 자주 표현되며, Transaction의 종류로는 대표적으로 SQL에서 insert, update, select를 수행하는 작업이 있다. 만약 계좌이체를 한다고 하면 출금(update)과 입금(update)이 하나의 Tx로 묶여야한다. 하나의 Tx로 묶여한다는 의미는 하나의 작업단위가 되어야 한다는 말이다. 내 계좌에서 은행계좌로 1000만원을 입금한다고 가정해보자. 그러면 내 계좌에서는 1000만원이 빠져나가야하고 은행계좌에는 1000만원이 입금되어야한다. Transaction이 제대로 이뤄지면 결과적으로 내 계좌(-1000만원) 은행계좌(+1000만원)인 작업이 실행 될 거다. ..

Spring/Spring DI와 AOP

[Spring DI와 AOP] DAO

DAO? DAO(Data Access Object)는 데이터(Data)에 접근(Access)하기 위한 객체(Object)다. DAO는 DB에 저장된 데이터를 쓰고(Create), 읽고(Read), 변경하고(Update), 삭제(Delete)를 한다. DB테이블당 하나의 DAO를 작성한다. 그렇다면 DAO를 왜 작성할까? DAO를 작성하는 가장 큰 이유는 코드의 중복을 피하기 위함이다. 위의 그림을 보면 DAO를 생성하기 전에는 selectUser()가 중복되는 걸 알 수 있다. 이후 DAO를 생성하면 중복되는 코드와 DAO가 수행하는 역할(쓰기, 읽기, 변경하기, 삭제하기)을 따로 떼어낼 수 있다.DAO를 생성함으로써 코드를 간결하게 할 수 있다. 코드의 중복을 피하는 것이외에도 관심사((Presenta..

각시탈코더
'Spring' 카테고리의 글 목록