Java jsp Java Beans Java Framework Javascript Framework
자바 기술 Java jsp Java Beans Java Framework Javascript Framework Jquery-Ajax React, Angular. JS bootstrap Front-end 기술요소 Java. Script HTML 5 CSS
Spring framework 3. 0
Spring framework 4. 0 – 5. 0
의존관계 연습 l DB 테이블 구성 l Dependency Dynamic Web Project 구성 l ojdbc 6. jar 복사 l model package 생성 l spring package 생 성
데이터 전달객체(DTO: Data Transper Object ) 구성 우클릭 >Source> Generate getters and setters
DAO(Data Access Object) – main() 포함 package spring; public class User. Dao { public void add( User user) throws Exception { Class. for. Name("oracle. jdbc. driver. Oracle. Driver"); User. Dao add() get() main() Connection conn = Driver. Manager. get. Connection( "jdbc: oracle: thin: @168. 126. 146. 45: 1521: orcl", "jjinpang"); Prepared. Statement pstmt= conn. prepare. Statement( "insert into users(id, name, password) values(? , ? )"); pstmt. set. String(1, user. get. Id()); pstmt. set. String(2, user. get. Name()); pstmt. set. String(3, user. get. Password()); pstmt. execute. Update(); pstmt. close(); conn. close(); }
DAO(Data Access Object) 구성 public User get(String id) throws Exception { Class. for. Name("oracle. jdbc. driver. Oracle. Driver"); Connection conn = Driver. Manager. get. Connection( "jdbc: oracle: thin: @168. 126. 146. 45: 1521: orcl", "jjinpang"); User. Dao add() get() main() Prepared. Statement pstmt= conn. prepare. Statement("select * from users where id=? "); pstmt. set. String(1, id); Result. Set rs = pstmt. execute. Query(); rs. next(); User user = new User(); user. set. Id(rs. get. String("id")); user. set. Name(rs. get. String("name")); user. set. Password(rs. get. String("password")); rs. close(); pstmt. close(); conn. close(); return user; }
DAO(Data Access Object) 구성 public static void main(String[] args) throws Exception { User. Dao dao = new User. Dao(); User user = new User(); User. Dao add() get() main() user. set. Id("kim"); user. set. Name("김한석"); user. set. Password("1234"); 1. User. Dao 우클릭 > Run As > Java application 2. 실행시 마다 user. set. Id("kim")와 데이터를 변 경해야함 dao. add(user); 3. ORA-00001: 무결성 제약 조건(JJIN. USERS_PK) 에 위배됩니다 System. out. println(user. get. Id()+": 등록성공"); User user 2=dao. get(user. get. Id()); System. out. println(user 2. get. Name()); System. out. println(user 2. get. Password()+": 조회성공"); }
내용 spring 2에 복사 후 개 중복코드 개선(user. Dao) spring 선 User. Dao add() get. Connecti on main()
get. Connection 메소드를 별도의 클래스로 분리 1. spring 4 package 생성 2. spring 2 내용 복사 3. Simple. Connection 클래스 생 성 4. get. Connection() 메서드 복사 User. Dao add() get. Connectio n() main() User. Dao simple. Connecti on add() get() main() Simple. Connectio n get. Connection()
User. Dao 변경 User. Dao Simple. Connectio n simple. Connection add() get() /* get. Connection() */ main() get. Connection() 1. 연관관계 설정 추가 지역변수와 전역변수 Simple. Connection simple. Connection = new Simple. Connection(); 나머지 코드는 그대로 … 2. 수정 4. 데이터 수정 후 실행수정 나머지 코드는 그대로 … 3. get. Connection() 메서드 삭제 /* ~ */
관계설정 책임의 분리 l User. Dao가 인터페이스 뿐만 아니라 구현 클래스까지 알아야 한다. Parent. Connection parent. Connection = new OChild. Connection(); Connection conn = parent. Connection. get. Connection(); User. Dao Parent. Connectio n add() get() main() interface Parent. Connection get. Connection() OChild. Connection get. Connection() MChild. Connection get. Connection() l User. Dao가 OChild. Connection 구현 클래스까지 알아야 하기 때문 l User. Dao는 Parent. Connection 인터페이스 외에는 어떤 클래스와도 관계 를 설정하지 않아야 한다.
관계설정 책임의 분리 User. Dao 클래스의 main() 메소드가 User. Dao를 사용하는 클라이언트 역 할 main() 메서드를 클라이언트 클래스로 분리하고 여기서 User. Dao와 Child. Connection 클래스와의 관계를 설정하는 기능 구현 User. Dao. Test main() 생성/제공 사용 User. Dao parent. Connecti o User. Dao() add() get() <<생성>> User. Dao Parent. Connection add() get() main() 사용 interface Parent. Connection OChild. Connection() OChild. Connection MChild. Connection get. Connection() interface Parent. Connection get. Connection() OChild. Connection get. Connection() MChild. Connection get. Connection()
Dependency 정리 Spring 2 Spring User. Dao add() get. Connecti on main() add() get() main() Spring 4 Simple. Connectio n User. Dao simple. Connecti on get. Connection() add() get() main() Spring 5 Spring 6 User. Dao main() { new user. Dao(con ) parent. Connecti on } User. Dao 사용 parent. Connecti o user. Dao(p. Co n) add() get() <<생성>> 사용 User. Dao interface Parent. Connection get. Connection() OChild. Connectio n get. Connection() parent. Connecti on add() get() main() interface Parent. Connection get. Connection() OChild. Connection get. Connection()
Dependency 정리 User. Dao main() { new user. Dao(con ) parent. Connecti on } User. Dao 사용 parent. Connecti Spring 6 사용 o user. Dao(p. Co n) add() get() interface Parent. Connection get. Connection() OChild. Connectio n <<생성>> get. Connection() Spring 7 User. Dao. Test 사용 User. Dao dao = new Dao. Factory(). user. Dao(); Parent. Connection interface Parent. Connection 사용 get. Connection() User. Dao() add() get() OChild. Connectionr 생성 요청 Dao. Fatory user. Dao( ){ return User. Dao(new OChild. Connection()); } 생성 get. Connection()
Error message
의존관계 연습 프로젝트 생성 1. File > new > Dynamic Web Project 2. Project name : Hello. App 입력
전체 project 구성
의존성 관계 예제 1. sample 1 package에 Message. Bean 클래스 생성 2. Hello. App 클래스 생성-main() 포함 public class Message. Bean { public void say. Hello(String name) { System. out. println("Hello, " + name + "!"); } } Hello. App package sample 1; + main(String[] args) + say. Hello(mane: String) public class Hello. App { public static void main(String[] args) { Message. Bean bean = new Message. Bean(); bean. say. Hello("Spring"); } } Message. Bean
의존성 관계 약화(인터페이스 사용) Hello. App + main(String[] args) interface Message. Bean + say. Hello(mane: String) Message. Beankr + say. Hello(mane: String) Message. Beanen + say. Hello(mane: String )
의존성 관계 약화- Hello. App : sample 2 1. sample 2 package에 Message. Bean interface 생 성 2. Message. Bean을 구현한 Message. Bean. En 클래스 생 성 3. Message. Bean을 구현한 Message. Bean. Kr 클래스 생 성
Spring에 의한 구현 Hello. App : sample 3 Srping 설정파일 beans. xml Hello. App + main(String[] args) Spring framework 어떤 구현 객체를 사용할지 XML 파일에서 결정하도록 Spring Framework 사용 interface Message. Bean + say. Hello(mane: String) Message. Beankr + say. Hello(mane: String) Message. Beanen + say. Hello(mane: String )
Spring MVC의 환경 구성 1. http: //repo. springsource. org/release/org/springframework/spring/ 에서 Spring Framework의 다운로드 2. 압축을 풀고 lib 폴더를 프로젝트 lib 폴더에 import 3. 기타 의존관계에 있는 필요한 library 파일 import
Spring MVC 프로젝트 생성 Web project를 Spring Project로 전환 1. 오른쪽 클릭>Spring Tools > Add Spring Project Nature
beans. xml 1. Web. Content 오른쪽 클릭> new > other > XML file <? xml version="1. 0" encoding="UTF-8" ? > <beans xmlns="http: //www. springframework. org/schema/beans" xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance" xsi: schema. Location="http: //www. springframework. org/schema/b eans http: //www. springframework. org/schema/beans/spring-beans 3. 0. xsd"> <bean id="message. Bean" class="sample 3. Message. Bean. En" /> </beans> 2. 실제 사용될 child 객체 생성
스프링을 이용한 구현 package sample 3; 1. Web. Content 오른쪽 클릭> new > other > XML file import org. springframework. beans. factory. Bean. Factory; import org. springframework. beans. factory. xml. Xml. Bean. Factory; import org. springframework. core. io. File. System. Resource; public class Hello. App { public static void main(String[] args) { Bean. Factory factory = new Xml. Bean. Factory(new File. System. Resource("beans. xml")); Message. Bean bean = factory. get. Bean("message. Bean", Message. Bean. class); bean. say. Hello("Spring"); Message. Bean bean = new Message. Bean. En(); } } * Beans. xml 파일에서 사용할 객체를 결정한다. –제 어의 역전 (Io. C) * 객체 변경 후 실행
Application. Context를 이용한 Io. C sample 4 1. sample 4 package 생성 2. 3. 4. 5. 6. sample 3 파일 복사 bean. xml src 에 복사 Spring library 설정 확인 main() 변경 –실행 bean. xml 변경 실행
Application. Context를 이용한 Io. C spring 8 1. spring 8 package 생성 2. Spring 7 파일 복사 3. Dao. Factory 클래스 @Bean 삽입 4. Spring library 설정 5. User. Dao. Test 변경
Application Context를 이용한 Io. C 1. spring 8 package 생성 2. Spring 7 파일 복사 3. Dao. Factory 클래스 @Bean 삽입 4. Spring library 설정 5. User. Dao. Test 변경
Application. Context. xml을 이용한 Io. C – spring 9 1. spring 9 package 생성 2. Spring 8 파일 복사 3. Dao. Factory 클래스 dao. Bean. xml 로 변경 4. User. Dao. Test 변경 dao. Bean 9. xml 생성자 이용
Application. Context. xml을 이용한 Io. C – spring 9 1. spring 9 package 생성 2. Spring 8 파일 복사 3. Dao. Factory 클래스 dao. Bean. xml 로 변경 4. User. Dao. Test 변경 dao. Bean 9. xml 생성자 이용
Application. Context. xml을 이용한 Io. C – spring 9
Set프로퍼티를 이용한 의존관계주입(DI) spring 10 1. 2. 3. 4. spring 10 package 생성 Spring 9 파일 복사 User. Dao 클래스 변경 dao. Bean 10. xml 변경
Set. Property를 이용한 의존관계주입(DI)spring 10 dao. Bean 9. xml dao. Bean 10. xml Set. Property 이용
Set. Property를 이용한 의존관계주입(DI)spring 10 dao. Bean 9. xml dao. Bean 10. xml Set. Property 이용
- Slides: 69