Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

최성현PT no.4 Spring Framework v1.0

Explaination of Spring Model View Controller Framework, working with Hibernate
by

Ted Choi

on 12 July 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 최성현PT no.4 Spring Framework v1.0

Thank y u!! Spring Framework Ted Sung-Hyun Choi
1. MVC (Model View Control)
2. IOC (Inversion of Control)
- DI (Dependency Injection)
3. AOP (Aspect-Oriented Programming)
4. etc Spring Framework Why? 시스템 결합도 낮춰서 유지보수성 향상
How? Spring container 에서 필요한 객체를 주입받는다. 예) Servlet의 service(ServletRequest request, ServletResponse response)
Benefit: WAS의 종류에 관계없이 유연한 or 독립적인 개발이 가능하다. JAVA DAO Object Data Access Object
is an abstract interface to database / persistence mechanism
Advantage:
Super simple (CRUD)
hide detail of data storage
More Information
http://en.wikipedia.org/wiki/Data_access_object
http://javarevisited.blogspot.com/2013/01/data-access-object-dao-design-pattern-java-tutorial-example.html IMPORTANT FILES WEB.XML
Spring-servlet.xml
jbdc.properties
hibernate.cfg.xml MVC (Model View Control) Spring
Core Concepts IOC (Inversion of Control) /* HelloWorld.java */
public class HelloWorld {
public static void main(String arg[]) {
System.out.println("Hello, World!");
}
} Hibernate AOP(Aspect-Oriented Programming) 이런거 노노~
class 하나로 개발해? Separates Class HelloWorld Class
A Class
B Class
C Store HelloWorld Display a string! class A 로부터 HelloWorld 가져와서
class C 로 전달하고, M C V 굉장히 복잡한 온갖 로직을
깔끔하게 만들어야 하는데? Spring MVC Benefit 명확한 역할 분리
설정의 간편
Developer specialization and focus
Parallel development by separate teams Primitive society Industrial society Communist society send a message: I need axe IOC Concepts Reference [1]http://www.roseindia.net/tutorial/java/jdbc/javamvcdesignpattern.html
[2] http://www.springsource.org/
[3] http://www.developersbook.com/spring/spring-tutorials/spring-tutorials.php
[4]http://www.tutorialspoint.com/hibernate/hibernate_architecture.htm
[5] http://viralpatel.net/blogs/introduction-to-hibernate-framework-architecture/
[6] http://www.mysql.com/why-mysql/

http://prezi.com/gu3unmxgflia/edit/#72
http://kiringun.egloos.com/660489
http://10albatross.tistory.com/4
http://interwater.tistory.com/entry/AOP-%EB%9E%80
http://thatisgood.tistory.com/entry/springDIIOC-spring-AOP
http://thatisgood.tistory.com/entry/spring-%ED%8A%B9%EC%A7%95
http://blog.naver.com/57gate?Redirect=Log&logNo=60182560676
http://blog.naver.com/horsepia?Redirect=Log&logNo=80018983195
- Spring Web MVC Framework
- Maven build tool
- Hibernate for data model ★요점:

스프링 모토: 객체지향 원칙에 충실한 POJO에 엔터프라이즈 서비스를 제공한다.

* Object가 어떻게 설계 -> 생성 -> 관계 -> 사용되는지에 중심을 둔다. MVC, IOC, AOP 등의 기술들은 이를 위한 핵심 도구들! 객체지향 원칙에 충실하게 엔터프라이즈 서비스를 제공하는 POJO(Plain Old Java Object) : 특정 자바 모델이나 기능, 프레임워크 등을 따르지 않는 단순한 자바 객체 Design MVC 개발패턴: Application의 영역을 3개로 분리, 객체간 결합도 최소화! MVC web.xml dispatcher-servlet.xml
각각의 역할을 나누어 작업하고자 하는 일을 분담시키는 것 " Spring MVC 에서 하나의 Request 를 처리하는 Life Cycle " Spring MVC, request flow MVC 패턴 기반, 웹 개발 프레임 워크 Model1 개발패턴 JSP가 홀로 request 요청에 대한 처리, 검증, 비지니스 로직 핸들링, response생성을 수행
하나의 페이지에 모든게 들어가며, 개발속도가 빠르고 초보자도 쉽게 배울 수 있다.
역할 분담이 굉장히 어렵고 페이지가 복잡해진다.
연관 관계 가독성이 떨어지고, 유지보수는 헬이다. Model2 개발패턴
(MVC Design Pattern) View는 JSP가 담당하고, Controller는 Servlet, Model은 application을 이용하여 개발하는 방식
역할 분담이 확실하고 재사용성이 높으며 확장도 용이하다.
아키텍터 이해를 요하며 초기 설계 시간이 길다.
Servlet의 Application 영향도가 굉장히 크다. Framework으로 MVC 단점을 최소화!! Spring MVC 흐름이 궁금해! 웹 개발 디자인패턴의 History가 궁금해! MVC가 뭐야?? controller, validator, command 객체, form 객체, model 객체, DispatcherServlet, handler mapping, view resolver 등의 각각의 역할은 해당 역할 만을 전문으로 수행하는 객체들이 담당한다. 어플리케이션 내의 JavaBean들과 프레임워크에 관련된 설정이 쉽고 간단하다. Business 객체를 Framework에 종속된 API를 사용하여 확장하지 않고도 command 또는 폼 객체로 재사용할 수 있다.

Application 레벨에서 데이터를 바인딩 하고 validation 에러를 체크할 수 있도록 데이터 바인딩 및 검증을 customizing 할 수 있다.

간단한 URL 기반 설정으로 다양한 handler mapping과 view resolution을 customizing 할 수 있다.

모델이 맵으로 구성되기 때문에 여러 view 기술과의 연계가 쉽다.

데이터 바인딩이나 테마 사용을 위한 spring 태그를 제공한다. "DI - Defendency Injection" 일반적인 코드 " IoC " "IoC(DI) 개념으로 가는 흐름 " "분리와 확장" IOC(DI) 특징 그림으로 보는 결합도 변경 일반적인 코드 - 제어의 역전 기초적인 JAVA코드? 확장을 편하게 하려면? 코드 의존성 제거!! IOC(DI) 의존성 주입 "DI 어떻게 사용 ?" * setter, 생성자, 메소드 로 바인딩 *어노테이션을 이용한 di 주입 <bean id="eventDao" class="net.daum.mypeople.dao.EventDaoImpl">
<property name="santaFactory" ref="santaFactory" />
<property name="santaName" value="air21_admin" />
</bean> public class EventDaoImpl implements EventDao {
private SantaFactory santaFactory;
public void setSantaFactory(SantaFactory santaFactory) {
this.santaFactory = santaFactory;
}

private String santaName;
public void setSantaName(String name) {
this.santaName = name;
} ApplicationContext.xml – assembler 역할 코드에 설정 정보를 입력
– 설정파일을 사용하지 않거나
– 설정파일의 크기를 줄이고자 할때 유용 @Required : 필수프로퍼티 검사
@Autowired : 의존관계 자동 설정
@Autowired(required=false)
@Qulifier (자동설정 제한 @Autowired와같이 씀)
@Configuration : 검색 등록, xml에검색할 패키지 지정
@Bean : 새로운 빈객체 제공 코드 상에서 무기를 줄 필요가 없다.
객체 생성 및 전달 코드가 제거되며, 그 의존성을 '주입'해준다.
결합관계를 XML로 가독성있게 관리 AOP(관점 지향 프로그래밍) 공통적으로 처리하여야 하는 로직(예: 업무 선/후 처리로직)을 각각의 Process 로직내에 주입하는 것 Before AOP -> After AOP AOP 용어 Ascpet : 여러 객체에 공통적으로 적용되는 부분
Advice : 공통 관심 기능을 언제 핵심 로직에 적용할 지를 정의
JoinPoit : Advice를 적용 가능한 지점을 의미
PointCut : Advice가 적용되는 Joinpoint의 부분집합
Weaving : Advice를 핵심 로직 코드에 적용하는 것 Weaving의 세 가지 방식
Compile 시에 Weaving 하기(AspectJ)
Class Loading 시에 Weaving 하기(AOP Libaray)
Runtime 시에 Weaving 하기 (Proxy) 시스템을 핵심관심사항(core)과 공통관심사항(common)으로 구분
공통관심사항을 한 곳에서 정의하고 적용대상(pointcut)과 적용시점(advice)로 명시
OOP로는 불가능한 중복작업을 없애고 효율적 유지보수 개발
How? 공통관심사항을 정의한 bean AOP 특징 적용대상지정(pointcut : within(), execution(), bean())
적용시점지정(advice : before, after-returning, after-throwing, after,around) 6th Tech Talk - IDE (Eclipse with Spring or Spring Tool Suit (STS)
- Patient
- list of dependencies Requirement 간편한 연습을 위해 필요한 기술 Spring 설정을 위한 Requirement Most Important!!! TODO: DAO, AOP, DI UML
Full transcript