180322 SPRING 프레임워크 - RYUDONGJIN/Memo_wiki GitHub Wiki
- 자바 언어를 기반으로 다양한 어플리케이션을 제작하기 위한 약속된 프로그래밍
- 톰캣을 이용하며 EJB에 비해서 코드의 경량화 그리고 개발 중에 테스트가 쉬움.
- 자바 엔터프라이즈 어플리케이션 개발에 필요로 하는 기능을 제공하는 오픈소스 경량급 어플리케이션 프레임워크
- 설정파일을 이용해서 어플리케이션을 구성하는 자바 객체를 생성하고 관리
- 설정파일이나 에노테이션을 통해 객체의 생명주기와 의존관계를 설정
- 상속을 통한 방법에 한계가 있어서 등장, 핵심기능과 공통 기능을 분리 시켜놓고, 공통 기능을 필요로 하는 핵심 기능들에서 사용하는 방식
- 공통 기능을 핵심 기능과 분리해놓고, 공통 기능 중에서 핵심 기능에 적용하고자 하는 부분에 적용하는 것
- 트랜잭션, 로깅, 보안과 같은 엔터프라이즈 서비스를 적용하고 깔끔한 코드를 유지
- Aspect : 공통 기능
- Advice : Aspect의 기능 자체
- Joinpoint : Advice를 적용해야 되는 부분(ex.필드, 메소드)
- Pointcut : Joinpoint의 부분으로 실제로 Advice가 적용된 부분
- Weaving : Advice를 핵심 기능에 적용하는 행위
- aop:around : 메소드 실행 전/후 및 exception 발생시 advice 실행
- aop:before : 메소드 실행 전에 advice 실행
- aop:after-returning : 정상적으로 메소드 실행 후에 advice 실행
- aop:after-throwing : 메소드 실행 중 exception 발생시 advice 실행
- aop:after : 메소드 실행 중 exception이 발생하여도 advice 실행
-
- 의존 설정(pom.xml)
-
- @Aspect 어노테이션을 이용한 Aspect클래스 제작
-
- XML파일에 aop:aspectj-autoproxy/ 설정
- 자바 객체는 특정한 인터페이스를 구현하거나 클래스를 상속받지 않음
- 일관된 트랜잭션 처리 : JDBC, JTA 컨테이너 제공 트랜잭션 구분 없이 동일한 코드를 여러 환경에서 사용
- 단순함
- 목적을 이룰 수 있는 단순하고 명퀘한 접근 방법
- 가장 단순한 객체지향적 개발 모델인 POJO 프로그래밍
- 유연성, 확장성
- 다른 프레임워크와 편리하게 접목되서 사용
- help에서 eclipse MarketPlace 에서 sts 검색해서 다운로드
- DI
- 부품을 생성하고 조립하는 라이브러리 집합체
컨테이너 생성 --> GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
컨테이너 설정 --> ctx.load("classpath:applicationCTX.xml"); ctx.refresh();
컨테이너 사용 --> Student student = ctx.getBean("student", Student.class);
컨테이너 종료 --> ctx.close();
Context ----ctx.getEnvironment()----> Environment ----env.getPropertySources()----> PropertySources
* 프로퍼티 추가 및 추출
추가 : propertySources.addLast()
추출 : env.getProperty()
- core : DI 기능을 비롯한 프레임워크의 기반을 제공
- beans : BeanFactory 인터페이스를 통해 구현
- expression : 객체에 접근하고 객체를 조작하기 위한 표현 언어 제공, 통합 EL을 확장
- context : core와 beans 모듈을 확장해서 국제화, 이벤트 처리, 리소스 로딩, 서블릿 컨테이너를 위한 컨텍스트 생성 등의 기능 제공, ApplicationContext 인터페이스를 통해 구현
- context.support : Ehcache, 메일, 스케줄링, UI의 Velocity 지원 기능 제공
- aop : AOP Alliance에 호환되는 AOP 구현을 제공
- aspects : AspectJ와의 통합을 제공
- web : 파일 업로드, Locale 처리 등 웹을 위한 통합 기능을 제공, 권격 지원 기능 중 웹 관련 기능을 제공
- web.servlet : 스프링 MVC를 제공, JSP, Velocity에 대한 뷰 연동을 지원
- web.struts : 스프링과 스트럿츠 연동 기능을 제공
- web.portlet : 포틀릿 화녁ㅇ에서 사용되는 MVC 구현 제공
- transaction : AOP를 이용한 선언적 트랜잭션 관리 및 코드를 이용한 트랜잭션 관리 기능 제공
- jdbc : JDBC 프로그래밍을 위한 추상 레이어를 제공, JDBC 템플릿을 제공함으로써 간결한 코드로 JDBC 프로그래밍을 할 수 있음
- orm : 하이버네이트, JPA, iBATIS, JDO 등 ORM API를 위한 통합 레이어를 제공, 스프링이 제공하는 트랜잭션 관리와의 연동 지원
- oxm : 객체와 XML 사이의 매핑을 처리하기 위한 추상 레이어를 제공, JAXB, Castor, XMLBeans, JiBX, XStream과의 연동 지원
- jms : JMS의 메시지를 생성하고 수신하는 기능을 제공
- test : JUnit이나 TestNG를 이용한 스프링 컴포넌트의 테스트를 지원
- instrument : Instrumentation 지원 클래스를 제공
- instrument.tomcat : 톰캣 서버를 위한 Instrumentation 지원 클래스를 제공
- asm : ASM 라이브러리를 재패키징 한 모듈