에버노트 정리 원본(사진포함)
==> http://www.evernote.com/l/AV6hL6sDfxNIubrImPXJS2417WVd_YTw81Y/
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2017.04.10 월
1일차 : DI
2일차 : MyBatis
3일차 : MyBatis + AOP
4일차 : Spring MVC
Spring 특징
- DI (Dependency Injection)
- AOP (Aspect Oriented Programming)
- ex ) 공통모듈인 경우 코드가 변경되더라도, 가져다쓰는 의존관계쪽에 영향이 미치지 않도록 의존성을 낮춤 - MVC (Model View Controller)
- RESTful
- Mybatis
개발환경 구성
DownLoad > C:\Spring FW (파일경로)
C:\Spring FW\sts-bundle\sts-3.8.4.RELEASE>STS.exe (파일실행)
- JDK 1.8
- STS 4.6.3
- TOMCAT 8.0.43
- tomcat Server STS 등록
- Chrome Browser을 STS에 연결
(1) JDK 1.8
(2) STS (Spring Tool Suit) : https://spring.io/tools/sts/all (설치)
(3) Tomcat Server 8.0 : http://tomcat.apache.org/download-80.cgi#8.0.43
(4) tomcat Server STS 등록
(5) Chrome Browser을 STS에 연결 : Window>Preferences> General>Web Browser
ㅇ 참고(전자정부 프레임워크)
사용하게 되는 Open Source 현황
- Spring (framework) : DI, AOP, MVC, RESTful
- Mybatis (framework) : db와 연동시 사용(ex : JDBC)
- JUnit : 단위테스트 지원
- Maven : 배포, 라이브러리 관리(jar파일)
- Maven project를 생성( pom.xml) - 인터넷 필수 (메이븐에 원격접속하여 download받음)
- 인터넷 사용 불가한경우, Maven 사이트에 들어가서 라이브러리(jar)만 다운로드후 Eclipse에 추가
- 참고) Maven Repository : https://mvnrepository.com/
dependency를 복사해서 pom.xml에 넣으면 자동으로 jar 파일 다운로드 생성
- 4.1 이클립스 메이븐 프로젝트 추가
Window > Show View > Other > Maven Repositories
- 4.2 메이븐 파일 위치 확인가능
로컬 Repository--> C:\Users\owner\.m2\repository - Log4j(Library) : Level을 설정하여 Level별 로그를 볼수 있다
<JAVA 프로젝트 생성 -> Maven Project로 변환>
1. JAVA Project 생성 : New > Java Project > Project Name : "Spring"
2. Conver to Maven Project
- Maven 프로젝트로 변환후, 'M' 작은 아이콘과, pom.xml 파일이 생성된 부분을 확인할 수 있다.
3. Spring Tools > Add Spring Project Nature
- Maven 사이트에서 'Spring Context' 검색후, dependency를 다운로드
- dependency 복사후, pom.xml 에 추가(jar 파일 추가 확인)
SPRING 의 정의
Spring은 Java Enterprise 개발을 편하게 해주는 Open Source 경량급(LightWeight) 애플리케이션 프레임워크다.
- EJB(Enterprise Java Beans) - zip하고 jar로 만들어서 ejb? 로 변환해서 WAS에서 배포
- POJO(Plian Old Java Object)
Spring 삼각형
이미지 출처 및 설명 : http://jinpyo900.tistory.com/55
(1) DI(Dependency Injection) : 의존관계 주입
- IoC (Inversion of Control) 제어반전 구현
(2)AOP(Aspect Oriented Programming) : 관점지향
(3) PSA(Portable Service Abstractions) : 특정 밴더에 종속적이지 않고, 독립적인 형태로 api가 구성됨
실습 (사전실행)
1. http://blog.naver.com/vega2k > SpringUserProject.zip 다운로드
2.Project Import
3. SpringWebPrjMY의 value.properties IP를 변경(강의실 IP)
4.실행(CRUD)
Framework와 Library의 차이점
Library의 특징
ㅇ 제어(Control)을 개발자가함
Framework 의 특징 (
Library 적 요소 + Container)
ㅇ Library 적인 요소를 가지고 있음
ㅇ 제어의 주도권을 가지고 있다.
ㅇ Container적 기능을 제공함(객체생성,소멸)
ㅇ ex ) tomcat , Mybatis, Spring
--> IoC (Inversion of Control) 제어반전
Framework의 구성요소
1) IoC 컨테이너 (제어권을 가져가서 컨테이너 기능을 제공해야함)
- 객체의 생성, 소멸, 객체 메서드 호출
2)Library인 요소
3)Design Pattern
- GOF패턴, J2EE 패턴
IoC(Inversion of Control) 구현
ㅇ DL : Dependency Lookup
ㅇ DI : Dependency Injection
ㅇ Depend on Interface
ㅇ Do not Depend on Implementation
=> 인터페이스에는 의존하되, 구현체에는
의존하지 말아라
ㅇ Setter Injection : setter 메서드의 인자(argument)에 의존하는 객체를 주입
ㅇ Constructure Injection : 생성자 인자에 의존하는 객체를 주입
개발자의 역할
1. Spring Bean 설정 파일 작성(xml)
- config > bean.xml 파일
- config > bean.xml 파일
- bean
<constructure-arg index="0" values="홍길동">
2. IoC 컨테이너 역할을 하는 클래스 사용
ApplicationContext context = new GenericXmlApplication (config/beans.xml) //직접생성 필요, XML위치 지정
Hello hello = Context.getBean(“hello”); //캐스팅필요
hello.print();
<<실습2-
Bean 생성및 그래프 보기 >>
1. New > Spring Bean Configuration File
2.config > Beans.xml , bean체크후 Finish
3. Beans.xml 내용 추가
<!-- Hello 클래스를 bean으로 등록 -->
<bean id = "hello" class="myspring.di.xml.Hello">
<property name ="name" value="jeongwon"></property>
<property name ="printer" ref="stringPrinter"></property>
</bean>
<!-- StringPrinter 클래스를 bean으로 등록 -->
<bean id = "stringPrinter" class="myspring.di.xml.StringPrinter">
</bean>
<!-- ConsolePrinter 클래스를 bean으로 등록 -->
<bean id = "consolePrinter" class="myspring.di.xml.ConsolePrinter">
</bean>
Beans.xml 의 Graph를 한눈에 볼 수 있음
ㅇ Spring Framework API : http://docs.spring.io/spring/docs/4.2.9.RELEASE/javadoc-api/
XML 문서의 구조를 정의해놓은 것 : XML 스키마(XSA)
코드
package myspring.di.xml.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import myspring.di.xml.Hello;
public class HelloBeanTest {
public static void main(String[] args) {
//1.IoC 컨테이너 객체 생성(객체생성을 직접하지 않고, 객체생성을 해준애(Bean)한테 객체를 받아옴)
ApplicationContext context= new GenericXmlApplicationContext("config/beans.xml");
Hello hello = (Hello)context.getBean("hello");
Hello hello2 = context.getBean("hello", Hello.class);
System.out.println(hello.sayHello()); // Hello Jeongwon --> 2번째방법을 더 많이 사용한다
hello.print();
Printer printer = context.getBean("stringPrinter",Printer.class);
System.out.println(printer.getClass().getName()); //myspring.di.xml.StringPrinter
System.out.println(printer.toString()); //Hello Jeongwon
}
}
ApplicationContext context= new GenericXmlApplicationContext("config/beans.xml");
Hello hello = (Hello)context.getBean("hello");
System.out.println(hello.sayHello()); // Hello Jeongwon
<Bean의 Scope(범위) 지정 >
ㅇ Request : (웹환경)A-B 동안에만 객체생성이 이루어지게
ㅇ Session : 세션
ㅇ Singleton : 한번만. Default 값
ㅇ Prototype : 매번 객체생성
'IT > SPRING' 카테고리의 다른 글
[파일] 스프링 정리 (0) | 2017.04.29 |
---|---|
[링크] Spring 관련 API (0) | 2017.04.29 |
[교육] Spring Framework 교육 (4일차) (0) | 2017.04.29 |
[교육] Spring Framework 교육 (3일차) (0) | 2017.04.29 |
[교육] Spring Framework 교육 (2일차) (0) | 2017.04.29 |