[part. 1 프로젝트의 기본 구조 구성]
1.개발 환경 설정 <page 26>
-sts 설치 / 이클립스( 메이븐 프로젝트 )
-스프링 프로젝트
Spring Starter Project(Spring Boot) :
별도의 설정이 없으며 was없이 실행가능하다. / jsp설정은 별도로 해야한다.
Spring Project :
현재 실무에서 많이 사용하고 있으며 모든 버전이 스프링에서 사용할수 있으나 초반 테스트 환경 구현이 어렵고 was와 연동하는 경우 리소스 추가요구된다.
이책은 Spring Project 로 Spring Legacy project 를 사용한다.
sts >> file > new project > Spring Legacy project > spring MVC project
-maven : poem.xml의 dependency 부분 확인할것 (.m2)
-tomcat 9.0 / java 1.8 / mysql 6.3.9 / mybatis
2.스프링의 간단한 소개 <page 49>
-프레임워크
뼈대가 완성, 조립식 가능
-POJO기반구성
엔터프라이즈급 프로젝트 시스템의 복잡성으로 인한 실패 >> 이로 인해 만들어진 경량 프레임워크로 관계시 apI를 사용하지 않는 POJO의 구성으로 가능하도록 제작되었음 >> 유연성, 확장성, 디커플링
-의존을 통한 객체 간의 관계 구성
DI(Dependency injection ) 의존
외부에서 필요한 객체를 직접 결정하기 때문에 의존 관계를 직접 처리할 필요없고 인터페이스를 통해 유연
한 구조 개발 가능(생성자, set메소드)
객체를 생성하면 각 객체를 연결해주는 조립기 역할을 한다.: GenericXmlApplicationContext클래스가 xml 파일의 설정정보를
읽어와 객체를 생성하고 연결한뒤 내부적으로 보관한다. 이렇게 생성한 객체를 보관하기 때문에 컨테이너라고 부른다. 그리고 이
생성된 객체들을 빈이라고 부른다.
IoC( Inversion of Control ) 제어의 역행
메소드나 객체의 호출작업을 외부에서 결정 >> 프레임워크에 필요한 부품을 만들고 조립가능 >> 구조를 설계할수있도록 만들어짐
-AOP(Aspect oriented Programming)
비즈니스 로직(core-concern)에만 집중할수있도록 횡단 관심사(cross-concern ex 로깅, 트랜잭션)를 분리
3.예제를 위한 MySQL의 설정과 스프링테스트
4.스피링 + MyBatis + Mysql 설정
5.모델 2방식의 스프링 MVC
<목요일 진행예정>
controller <page 105>
리다이렉트 경우 파라미터 RedirectAttributes 로 받아 속성 addFlashAttribute를 사용한후
리턴을 return "redirect: /@RequestMapping사용
JSON 데이터를 생성하는 경우 리턴타입 @ResponseBody 클래스 반환
6.스프링 + Mybatis <page 126>
-mysql : book_ex스키마에 tbl_member 생성
create table tbl_member (
userid varchar(50) not null,
userpw varchar(50) not null,
username varchar(50) not null,
email varchar(100),
regdate timestamp default now(),
updatedate timestamp default now(),
primary key(userid)
)
timestamp 사용시 서버시간 UTC 기준이므로 timezone 유의
-도메인 객체를 위한 클래스 설계
도메인 : 분리가 가능한 단위
-DAO인터페이스 작성
-XML Mapper작성
참고사이트 http://www.mybatis.org/mybatis-3
-mybatis-spring에서 xmlMapper인식
-DAO인터페이스 구현
sqlSessionTemplete : mybatis의 데이터베이스의 연결을 맺고 작업이 완료된 후 작업을 close 하는 클래스
SqlSessionTemlate은 sqlSessionFactory를 생성자로 주입해서 설정한다.
첨부파일은 <page 138>까지 실행한 프로젝트
ex_0.zip
트러블슈팅
에러 : Access denied for user 'zerock'@'localhost'
이유 : mysql 외부 접속 권한 없어 root-context.xml의 dataSource bean을 생성하지못함
해결 : 사용자계정에 권한부여 참고 사이트 : http://withcoding.com/36