스프링 프레임워크
Spring Framework![]() | |
개발자 | VMware |
---|---|
초기 릴리즈 | 2002년 10월 1일; | 전(
안정된 릴리스 | 5.3.19[1] / 2022년 4월 ; 전 ( ) |
저장소 | |
기입처 | 자바 |
플랫폼 | 자바 EE |
유형 | 응용 프로그램 프레임워크 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | spring![]() |
Spring Framework는 Java 플랫폼용 제어 컨테이너의 반전 및 애플리케이션 프레임워크입니다.프레임워크의 핵심 기능은 모든 Java 응용 프로그램에서 사용할 수 있지만 Java EE(Enterprise Edition) 플랫폼 위에 웹 응용 프로그램을 구축하기 위한 확장 기능이 있습니다.이 프레임워크는 특정 프로그래밍 모델을 강요하지는 않지만, Java 커뮤니티에서 엔터프라이즈 JavaBeans(EJB) 모델에 추가하여 인기를 끌고 있습니다.스프링 프레임워크는 오픈 소스입니다.
버전 이력
버전 | 날짜. | 메모들 |
---|---|---|
0.9 | 2003 | |
1.0 | 2004년 3월 24일 | 첫 번째 프로덕션 릴리즈. |
2.0 | 2006 | |
3.0 | 2009 | |
4.0 | 2013 | |
5.0 | 2017 |
첫 번째 버전은 Rod Johnson에 의해 작성되었으며, Rod Johnson은 2002년 10월에 그의 책 Expert One Design and Development와 함께 프레임워크를 발표했습니다.이 프레임워크는 2003년 6월에 Apache 2.0 라이선스로 처음 출시되었습니다.첫 번째 프로덕션 릴리스인 1.0은 2004년 [2]3월에 출시되었습니다.Spring 1.2.6 프레임워크는 2006년 [3][4]Jolt Productivity Award와 JAX Innovation Award를 수상했습니다.Spring 2.0은 2006년 10월에, Spring 2.5는 2007년 11월에, Spring 3.0은 2009년 12월에, Spring 3.1은 2011년 12월에, Spring 3.2.5는 2013년 [5]11월에 출시되었습니다.Spring Framework 4.0은 2013년 [6]12월에 출시되었습니다.Spring 4.0에서는 Java SE(Standard Edition) 8, Groovy 2, Java EE 7 및 WebSocket 지원이 눈에 띄게 향상되었습니다.
Spring Boot 1.0은 2014년 [7]4월에 출시되었습니다.
Spring Framework 4.2.0은 2015년 7월 31일에 출시되었으며 2015년 [8]9월 1일에 출시된 버전 4.2.1로 즉시 업그레이드되었습니다."핵심 개선 및 최신 웹 기능에 초점을 맞춘 Java 6, 7, 8과 호환됩니다."[9]
Spring Framework 4.3은 2016년 6월 10일에 출시되었으며 [10]2020년까지 지원됩니다."일반적인 Spring 4 시스템 요건(Java 6+, Servlet 2.5+), [...][9]의 최종 세대입니다."
스프링 5는 Reactive Streams 호환 Reactor [11]Core를 기반으로 구축될 예정이다.
모듈
스프링 프레임워크에는 다양한 서비스를 제공하는 여러 모듈이 포함되어 있습니다.
- 스프링 코어 컨테이너: 스프링의 기본 모듈로 스프링 컨테이너(BeanFactory 및 ApplicationContext)[12]를 제공합니다.
- 애스펙트 지향 프로그래밍: 크로스 컷(cross-cuting) 우려사항을 구현할 수 있습니다.
- 인증 및 인가: Spring Security 서브프로젝트(이전의 Acegi Security System for Spring)를 통해 다양한 표준, 프로토콜, 도구 및 프랙티스를 지원하는 구성 가능한 보안 프로세스.
- 구성에 대한 관습: Spring Roo 모듈에서는 Spring 기반 엔터프라이즈 애플리케이션을 위한 신속한 애플리케이션 개발 솔루션이 제공됩니다.
- 데이터 액세스: Java Database Connectivity(JDBC) 및 객체 관계 매핑 도구를 사용한 Java 플랫폼 상의 관계형 데이터베이스 관리 시스템 및 NoSQL 데이터베이스 사용
- 제어 컨테이너 반전: 어플리케이션 컴포넌트 구성 및 Java 오브젝트 라이프 사이클 관리.주로 의존관계 주입을 통해 이루어집니다.
- 메시징: Java Message Service(JMS; Java 메시지 서비스)를 통한 메시지 큐로부터의 투과적인 메시지 소비를 위한 메시지 리스너 오브젝트 설정 등록, 표준 JMS API를 통한 메시지 전송 개선
- Model-View-Controller: HTTP 및 Servlet 기반 프레임워크로 웹 응용 프로그램 및 RESTful(표현적 상태 전송) 웹 서비스에 대한 확장 및 맞춤 후크를 제공합니다.
- 리모트 액세스 프레임워크: Java Remote Method Invocation(RMI), CORBA(Common Object Request Broker Architecture) 및 웹 서비스를 포함한 HTTP 기반 프로토콜(SOAP(Simple Object Access Protocol)을 지원하는 네트워크를 통한 Java 객체의 구성 원격 프로시저 호출(RPC) 스타일 마샬링
- 트랜잭션 관리: 여러 트랜잭션 관리 API를 통합하고 Java 객체의 트랜잭션을 조정합니다.
- 리모트 관리: Java Management Extensions(JMX)를 통한 로컬 또는 리모트 구성용 Java 객체 구성 노출 및 관리
- 테스트: 쓰기 유닛 테스트 및 통합 테스트 지원 클래스
제어용기 반전(의존성 주입)
Spring Framework의 중심에는 Reflection을 사용하여 Java 객체를 구성하고 관리하는 일관된 수단을 제공하는 IoC(Inversion of Control) 컨테이너가 있습니다.컨테이너는 특정 개체의 개체 수명 주기 관리(이러한 개체 생성, 초기화 메서드 호출 및 이들 개체를 배선하여 구성)를 담당합니다.
컨테이너에 의해 생성된 개체를 관리 개체 또는 콩이라고도 합니다.컨테이너는 XML(Extensible Markup Language) 파일을 로드하거나 구성 클래스에서 특정 Java 주석을 감지하여 구성할 수 있습니다.이러한 데이터 소스에는 콩을 만드는 데 필요한 정보를 제공하는 콩 정의가 포함되어 있습니다.
개체는 종속성 조회 또는 종속성 [13]주입을 통해 가져올 수 있습니다.의존관계 룩업은 발신자가 컨테이너 오브젝트에 특정 이름 또는 특정 유형의 오브젝트를 요구하는 패턴입니다.종속성 주입은 컨테이너가 생성자, 속성 또는 공장 메서드를 통해 이름으로 개체를 다른 개체로 전달하는 패턴입니다.
대부분의 경우 스프링 프레임워크의 다른 부분을 사용할 때는 컨테이너를 사용할 필요가 없습니다.단, 이 컨테이너를 사용하면 애플리케이션의 구성과 커스터마이즈가 쉬워집니다.Spring 컨테이너는 애플리케이션을 구성하기 위한 일관된 메커니즘을 제공하며 소규모 애플리케이션에서 대규모 엔터프라이즈 애플리케이션에 이르기까지 거의 모든 Java 환경과 통합됩니다.
컨테이너는 Pitchfork 프로젝트를 통해 부분적으로 호환되는 EJB(Enterprise JavaBeans) 3.0 컨테이너로 전환할 수 있습니다.일부에서는[who?] 스프링 프레임워크가 [14]기준에 맞지 않는다고 비판한다.그러나 SpringSource는 EJB 3 컴플라이언스를 주요 목표로 보지 않으며, Spring Framework와 컨테이너를 통해 보다 강력한 프로그래밍 모델을 [15]구현할 수 있다고 주장합니다.프로그래머는 개체를 직접 만드는 것이 아니라 스프링 구성 파일에서 개체를 정의하는 방법을 설명합니다.마찬가지로 서비스와 컴포넌트는 직접 호출되지 않습니다.스프링 컨피규레이션파일은 호출해야 할 서비스와 컴포넌트를 정의합니다.이 IoC는 유지보수 및 테스트의 용이성을 높이기 위한 것입니다.
애스펙트 지향 프로그래밍 프레임워크
Spring Framework에는 횡단적인 관심사를 측면으로 모듈화하는 자체 AOP(Aspect Oriented Programming) 프레임워크가 있습니다.개별적인 AOP 프레임워크를 작성하는 동기는 설계, 구현 또는 구성의 복잡함 없이 기본적인 AOP 기능을 제공할 수 있어야 한다는 믿음에서 비롯됩니다.스프링 AOP 프레임워크는 스프링 컨테이너를 최대한 활용합니다.
Spring AOP 프레임워크는 프록시 패턴 기반이며 실행 시 설정됩니다.이것에 의해, 컴파일 스텝이나 로드 타임의 짜임이 불필요하게 됩니다.한편 인터셉트에서는 결합점에서의 기존 객체에 대해서만 공개 메서드 실행이 허용됩니다.
Spring AOP는 AspectJ 프레임워크에 비해 파워는 떨어지지만 복잡함도 줄어듭니다.스프링 1.2에는 컨테이너 내의 AspectJ 측면을 구성할 수 있는 지원이 포함되어 있습니다.Spring 2.0에서는 AspectJ와의 통합이 강화되었습니다.예를 들어 포인트 컷 언어는 재사용되며 Spring AAP 기반 측면과 혼합될 수 있습니다.또한 Spring 2.0은 AspectJ를 사용하여 AspectJ 컴파일 시간 또는 로드 시간 위빙을 통한 선언적 트랜잭션 관리 및 종속성 주입과 같은 Spring 공통 기능을 제공하는 Spring Aspects 라이브러리를 추가했습니다.Spring Source는 Spring Roo 및 Spring Insight와 같은 다른 Spring 프로젝트에서도 AspectJ AOP를 사용하며 Spring Security는 AspectJ 기반의 Aspect 라이브러리도 제공합니다.
Spring AOP는 Spring Framework 내에서 교차 우려 사항에 대응할 수 있도록 설계되었습니다.컨테이너에 의해 생성 및 구성된 모든 객체는 스프링 AOP를 사용하여 농축할 수 있습니다.
Spring Framework는 트랜잭션 관리, 보안, 원격 액세스 및 JMX에 Spring AOP를 내부적으로 사용합니다.
프레임워크 버전 2.0 이후 Spring에서는 AOP 설정에 대해 다음 두 가지 접근법이 제공됩니다.
<빈즈 xmlns="http://www.springframework.org/schema/beans" xmlns: mvc="http://www.springframework.org/schema/mvc" xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns: aop="http://www.springframework.org/schema/aop" xmlns: 삭제="http://www.springframework.org/schema/context" xi: schema Location=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
Spring 팀은 새로운 AOP 관련 용어를 도입하지 않기로 결정했습니다.따라서 Spring 레퍼런스 문서와 API에서 aspect, join point, advised, introduct, target 객체(advised object), AOP 프록시, 직조 등의 용어는 다른 대부분의 AOP 프레임워크(특히 AspectJ)와 동일한 의미를 가집니다.
데이터 액세스 프레임워크
Spring의 데이터 액세스 프레임워크는 개발자가 응용프로그램에서 데이터베이스로 작업할 때 직면하는 일반적인 문제를 해결합니다.JDBC, iBatis/MyBatis, 휴지 상태, Java Data Objects(JDO, 5.x 이후 중단), Java Persistence API(JPA), Oracle TopLink, Apache OJB 및 Apache Cayenne 등 Java에서 널리 사용되는 모든 데이터 액세스 프레임워크에 대한 지원이 제공됩니다.
이러한 모든 지원 프레임워크에 대해 Spring은 다음과 같은 기능을 제공합니다.
- 자원 관리– 데이터베이스 자원 자동 취득 및 해방
- 예외 처리 – 데이터 액세스 관련 예외를 스프링 데이터 액세스 계층으로 변환
- 트랜잭션 참여– 진행 중인 트랜잭션에 투명하게 참여
- 자원 언랩 - 접속 풀 래퍼에서 데이터베이스 오브젝트 취득
- BLOB(Binary Large Object) 및 CLOB(Character Large Object) 처리를 위한 추상화
이러한 모든 기능은 지원되는 각 프레임워크에 대해 Spring에서 제공하는 템플릿클래스를 사용하면 사용할 수 있습니다.비평가들은 이러한 템플릿 클래스가 침입적이며 (예를 들어) Hibernate API를 [18][failed verification]직접 사용하는 것보다 이점을 제공하지 않는다고 말합니다.이에 대응하여 Spring 개발자들은 Hibernate와 JPA API를 직접 사용할 수 있게 되었습니다.단, 어플리케이션코드가 데이터베이스 자원을 취득하고 닫을 책임이 없어져 예외변환을 지원하지 않기 때문에 투과적인 트랜잭션 관리가 필요합니다.
Spring의 트랜잭션 관리와 함께 데이터 액세스 프레임워크는 데이터 액세스 프레임워크와 함께 작업할 수 있는 유연한 추상화를 제공합니다.Spring Framework는 공통 데이터 액세스 API를 제공하지 않습니다.대신 지원되는 API의 모든 기능은 그대로 유지됩니다.Spring Framework는 Java에서 사용할 수 있는 [19]유일한 프레임워크로 애플리케이션 서버 또는 컨테이너 외부에서 관리형 데이터 액세스 환경을 제공합니다.
하이버네이트를 사용한 트랜잭션 관리에 스프링을 사용하는 경우 다음 콩을 구성해야 할 수 있습니다.
- 데이터 소스와 같은
com.mchange.v2.c3p0.ComboPooledDataSource
또는org.apache.commons.dbcp.BasicDataSource
- Session Factory와 같은
org.springframework.orm.hibernate3.LocalSessionFactoryBean
DataSource 속성 포함 - 최대 절전 모드속성
org.springframework.beans.factory.config.PropertiesFactoryBean
- Transaction Manager와 같은
org.springframework.orm.hibernate3.HibernateTransactionManager
Session Factory Atribute를 사용하여
그 외의 설정 포인트는 다음과 같습니다.
- 커팅 포인트의 AAP 구성.
- AOP[clarify] 어드바이스의 트랜잭션 의미.
트랜잭션 관리
Spring의 트랜잭션 관리 프레임워크는 Java 플랫폼에 추상화 메커니즘을 제공합니다.그 추상화에는 다음이 있습니다.
이에 비해 Java Transaction API(JTA; Java 트랜잭션 API)는 중첩된 트랜잭션과 글로벌 트랜잭션만 지원하며 애플리케이션 서버(및 경우에 따라 애플리케이션 서버 내 애플리케이션 배포)가 필요합니다.
Spring Framework는 PlatformTransactionManager를 제공하여 다음과 같은 다양한 트랜잭션 관리 전략을 제공합니다.
- JDBC Connection에서 관리되는 트랜잭션
- 객체-관계 매핑 작업 단위로 관리되는 트랜잭션
- JTA Transaction Manager 및 User Transaction을 통해 관리되는 트랜잭션
- 객체 데이터베이스와 같은 다른 리소스에서 관리되는 트랜잭션
이 추상화 메커니즘과 더불어 프레임워크는 트랜잭션 관리를 애플리케이션에 추가하는 두 가지 방법도 제공합니다.
- 스프링의 트랜잭션을 사용하여 프로그래밍 방식으로템플릿
- XML 또는 Java 주석 등의 메타데이터를 사용하여 구성(@Transactional 등)
트랜잭션 관리 프레임워크를 통합한 Spring의 데이터 액세스 프레임워크와 함께 JTA나 EJB에 의존하지 않고 구성을 통해 트랜잭션 시스템을 설정할 수 있습니다.트랜잭션 프레임워크는 메시징 및 캐싱 엔진과도 통합됩니다.
모델 뷰 컨트롤러 프레임워크
Spring Framework는 당초 계획되지 않은 자체 모델 뷰 컨트롤러(MVC) 웹 애플리케이션 프레임워크를 갖추고 있습니다.Spring 개발자들은 당시 인기 있었던 자카르타 Struts 웹 [20]프레임워크의 형편없는 설계와 사용 가능한 다른 프레임워크의 결함에 대한 반응으로 자체 웹 프레임워크를 작성하기로 결정했습니다.특히, 그들은 프레젠테이션 계층과 요청 처리 계층, 그리고 요청 처리 계층과 [21]모델 사이의 분리가 불충분하다고 느꼈습니다.
Struts와 마찬가지로 Spring MVC는 요청 기반 프레임워크입니다.이 프레임워크는 최신 요청 기반 프레임워크에서 처리되어야 하는 모든 책임에 대한 전략 인터페이스를 정의합니다.각 인터페이스의 목적은 Spring MVC 사용자가 원하는 경우 자신의 구현을 쉽게 작성할 수 있도록 단순하고 명확하게 하는 것입니다.MVC는 보다 깔끔한 프런트 엔드 코드를 위한 길을 열어줍니다.모든 인터페이스는 Servlet API에 밀접하게 결합되어 있습니다.일부에서는 Servlet API와의 긴밀한 결합이 Spring 개발자의 웹 기반 응용[citation needed] 프로그램에 대한 높은 수준의 추상화를 제공하는 데 실패한 것으로 보고 있습니다.그러나 이 결합을 통해 개발자는 Servlet API의 기능을 계속 사용할 수 있으며, 작업을 쉽게 하기 위한 높은 추상화 프레임워크도 제공합니다.
DispatcherServlet 클래스는 프레임워크의[22] 프론트컨트롤러로 HTTP 요청 실행 단계 중 다양한 인터페이스에 제어를 위임합니다.
Spring MVC에 의해 정의되는 가장 중요한 인터페이스와 그 책임은 다음과 같습니다.
- 컨트롤러: 모델과 View 사이에 있어 수신 요청을 관리하고 적절한 응답으로 수정합니다.컨트롤러는 http 요구를 대응하는 메서드에 매핑합니다.이것은, 착신 정보를 지시하는 게이트로서 기능합니다.모델 또는 뷰로 전환됩니다.
- HandlerAdapter: 수신 요청을 처리하는 개체 실행
- HandlerInterceptor: Servlet 필터와 동등하지만 동일하지 않은 착신 요구를 대행 수신합니다(사용은 옵션이며 DispatcherServlet에 의해 제어되지 않습니다).
- Handler Mapping : 수신 요구(핸들러)를 처리하는 오브젝트 선택(해당 요구의 내부 또는 외부 속성 또는 조건을 기반으로 함)
- Locale Resolver: 개별 사용자의 로케일을 해결 및 저장(옵션)
- Multipart Resolver: 수신 요청을 래핑하여 파일 업로드 작업 촉진
- 보기: 클라이언트에 응답을 반환할 책임이 있습니다.일부 요청은 모델 부분으로 이동하지 않고 바로 표시되며, 다른 요청은 세 가지 모두를 수행할 수 있습니다.
- View Resolver: 뷰의 논리명을 기반으로 뷰를 선택합니다(사용은 엄밀하게 필요하지 않습니다).
위의 각 전략 인터페이스는 전체적인 프레임워크에서 중요한 책임을 지고 있습니다.이러한 인터페이스에 의해 제공되는 추상화는 강력하기 때문에 Spring MVC는 이러한 모든 인터페이스의 구현과 함께 제공되며 Servlet API 위에 기능 세트를 제공합니다.다만, 개발자나 벤더는 그 외의 실장을 자유롭게 작성할 수 있습니다.봄 MVC는 Java를 사용합니다.java.util.Map
키가 문자열 값이어야 하는 모델에 대한 데이터 지향 추상화로서 인터페이스를 사용합니다.
이러한 인터페이스의 실장 테스트의 용이성은 Spring MVC가 제공하는 고도의 추상화의 중요한 장점 중 하나입니다.Dispatcher Servlet은 애플리케이션의 웹 계층을 구성하기 위해 제어 컨테이너의 스프링 역전에 단단히 연결되어 있습니다.그러나 웹 애플리케이션은 컨테이너를 포함한 스프링 프레임워크의 다른 부분을 사용할 수 있으며 스프링 MVC를 사용하지 않도록 선택할 수 있습니다.
Spring MVC
사용자가 링크를 클릭하거나 웹 브라우저에서 양식을 제출하면 요청은 Spring Dispatcher Servlet으로 전송됩니다.Dispatcher Servlet은 봄 MVC의 프론트 컨트롤러입니다.1개 이상의 핸들러 매핑을 참조합니다.Dispatcher Servlet은 적절한 컨트롤러를 선택하여 요청을 전송합니다.컨트롤러는 특정 요청을 처리하고 결과를 생성합니다.그것은 모델이라고 알려져 있다.이 정보는 html 또는 JSP와 같은 프론트엔드 테크놀로지로 포맷해야 합니다.응용 프로그램 보기입니다.모든 정보는 MODEL And VIEW 개체에 있습니다.컨트롤러가 특정 뷰에 연결되어 있지 않은 경우 Dispatcher Servlet은 ViewResolver를 사용하여 실제 JSP를 검색합니다.
Dispatcher Servlet 설정
DispatcherServlet은 web.xml로 설정해야 합니다.
<servlet> <servlet-name> My Servlet </servlet-name> <servlet-class>org.springframework.web.servlet.Dispatcher Servlet </servlet-class> </servlet-mapping> </servlet-name> </servlet-name> My Servlet </servlet-name> <url-pattern>/</servlet-mapping>
리모트 액세스 프레임워크
Spring의 리모트 액세스 프레임워크는 클라이언트 접속 및 서버상의 오브젝트 마샬링을 위해 Java 플랫폼에서 이용 가능한 다양한 RPC(리모트 프로시저 호출) 기반 기술을 사용하기 위한 추상화입니다.이 프레임워크에서 제공하는 가장 중요한 기능은 제어의 반전 및 AOP를 결합함으로써 이러한 기술의 구성과 사용을 최대한 용이하게 하는 것입니다.
또한 이 프레임워크는 장애 복구(연결 실패 후 자동 재연결) 및 EJB 원격 상태 비저장 세션 빈을 클라이언트 측에서 사용하기 위한 몇 가지 최적화 기능을 제공합니다.
Spring은 이러한 프로토콜과 제품을 즉시 지원합니다.
- HTTP 기반 프로토콜
- 엔터프라이즈 JavaBean 클라이언트 통합
- 로컬 EJB 상태 비저장 세션 빈 연결: 로컬 상태 비저장 세션 빈에 연결
- 원격 EJB 상태 비저장 세션 빈 연결: 원격 상태 비저장 세션 빈에 연결
- 비누.
Apache CXF는 Spring Framework와의 통합을 통해 서버 측의 객체를 RPC 방식으로 내보냅니다.
Spring Remote 액세스 프레임워크에서 지원되는 모든 RPC 스타일 프로토콜 및 제품에 대한 클라이언트 및 서버 설정(Apache Axis 지원 제외)은 Spring Core 컨테이너에서 구성됩니다.
Spring Framework에 포함된 원격 하위 시스템의 대체 오픈 소스 구현(1-1, 1-다수, 동적 서비스 검색)이 있습니다.
컨벤션 오버 컨피규레이션의 신속한 애플리케이션 개발
스프링 부트
Spring Boot Extension은 Spring의 컨벤션 오버 구성 솔루션입니다.스탠드 아론의 실가동용 스프링 베이스 애플리케이션을 「실행」[23]할 수 있습니다.Spring 플랫폼과 서드파티 라이브러리의 최적의 구성과 사용에 대한 Spring 팀의 "의견 뷰"로 사전에 구성되어 있으므로 최소한의 소란으로 시작할 수 있습니다.대부분의 Spring Boot 어플리케이션에서는 스프링 구성이 거의 필요하지 않습니다.
주요 특징:
- 독립 실행형 Spring 응용 프로그램 생성
- Tomcat 또는 Jetty를 직접 포함(WAR 파일 배포 불필요)
- Maven/Gradle 구성을 단순화하기 위해 의도적인 프로젝트 객체 모델(POM)을 제공합니다.
- 가능한 경우 스프링 자동 구성
- 메트릭, 헬스 체크, 외부 구성 등의 운용 가능한 기능을 제공합니다.
- 코드 생성이나 XML 설정의 [24]요건이 전혀 필요 없습니다.
- 원활한 통합 및 모든 엔터프라이즈 통합 패턴 지원
스프링루
Spring Roo는 Java에서 애플리케이션을 신속하게 구축하기 위해 컨벤션 오버 구성을 사용하는 대체 코드 생성 기반 접근 방식을 제공하는 커뮤니티 프로젝트입니다.현재 Spring Framework, Spring Security 및 Spring Web Flow를 지원합니다.Roo는 다른 신속한 애플리케이션 개발 프레임워크와 다른 점은 다음과 같습니다.
- 확장성(애드온 사용)
- Java 플랫폼의 생산성(다른 언어와는 달리)
- 록인 회피(어느 애플리케이션에서나 몇 분 안에 Roo를 삭제할 수 있습니다)
- 런타임 회피(관련된 도입 이점 포함)
- 조작성(특히 셸 기능과 사용 패턴에 의한)
배치 프레임워크
Spring Batch는 대량 레코드를 처리하는 데 필수적인 재사용 가능한 기능을 제공하는 배치 처리 프레임워크입니다. 여기에는 다음이 포함됩니다.
- 로깅/로그인
- 트랜잭션 관리
- 작업 처리 통계
- 작업 재시작
또한 최적화 및 파티셔닝 기술을 통해 매우 많은 양의 고성능 배치 작업을 가능하게 하는 고급 기술 서비스와 기능을 제공합니다.Spring Batch는 일련의 작업을 실행합니다.작업은 여러 단계로 구성되며 각 단계는 READ-PROCESS-WRITE 태스크 또는 단일 작업 태스크(태스클릿)로 구성됩니다.
"READ-PROCESS-WRITE" 프로세스는 리소스(CSV, XML 또는 데이터베이스)에서 데이터를 "읽기"하고 "처리"한 후 다른 리소스(CSV, XML 또는 데이터베이스)에 "쓰기"하는 단계로 구성됩니다.예를 들어 스텝은 CSV 파일에서 데이터를 읽고 처리하여 데이터베이스에 쓸 수 있습니다.Spring Batch는 CSV, XML 및 데이터베이스를 읽기/쓰기하기 위한 많은 클래스를 제공합니다.
"단일" 작업 태스크(태스클릿)의 경우 단계가 시작되거나 완료된 전후에 리소스를 청소하는 것과 같이 단일 태스크만 수행하는 것을 의미합니다.
스텝을 체인으로 묶어 작업으로 실행할 수 있습니다.
통합 프레임워크
Spring Integration은 메시징 또는 이벤트 기반 아키텍처에 필수적인 재사용 가능한 기능을 제공하는 엔터프라이즈 애플리케이션 통합을 위한 프레임워크입니다.
- 라우터: 조건에 따라 메시지를 메시지채널로 라우팅합니다
- transforms: 메시지payload를 변환/변환/변경하여 변환된 payload를 사용하여 새 메시지를 만듭니다.
- 어댑터 – 다른 테크놀로지 및 시스템(HTTP, AMQP(Advanced Message Queuing Protocol), JMS(Java Message Service), XMPP(Extensible Messaging and Presence Protocol), SMTP(Simple Mail Access Protocol), IMAP(Internet Message Access Protocol FTP), FTP(파일 전송 프로토콜),
- filters : 기준에 따라 메시지를 필터링합니다.조건이 충족되지 않으면 메시지는 폐기됩니다.
- 서비스 액티베이터: 서비스 오브젝트에 대한 조작을 호출합니다.
- 관리 및 감사
스프링 통합은 파이프 및 필터 기반 아키텍처를 지원합니다.
Spring4Shell 취약성
다른 소프트웨어와 마찬가지로 Spring에도 몇 가지 취약성이 있을 수 있습니다.그 중 1대(CVE-2022-22965)의 이름은 '스프링4'입니다.셸" (Log4와 유사)껍데기[25]
「 」를 참조해 주세요.
레퍼런스
- ^ https://github.com/spring-projects/spring-framework/releases/tag/v5.3.19 를 참조해 주세요.
- ^ "Spring Framework 1.0 Final Released". Official Spring Framework blog. 24 March 2014. Retrieved 1 March 2021.
- ^ 2006년 졸트 수상자
- ^ "JAX Innovation Award Gewinner 2006". Archived from the original on 2009-08-17. Retrieved 2009-08-12.
- ^ "Spring Framework 3.2.5 Released". Official Spring website. 7 Nov 2013. Retrieved 16 October 2016.
- ^ "Announcing Spring Framework 4.0 GA Release". Spring blog. 12 December 2013.
- ^ "Spring Boot v1.0.0.RELEASE". github.com.
- ^ "Spring Framework 4.2 goes GA". Spring Blog. 31 July 2015.
- ^ a b "Spring Framework 4.2 goes GA". Spring Blog.
- ^ "Upgrading to Spring Framework 5.x". github.com.
- ^ "Reactive Spring". Spring Blog. 9 February 2016.
- ^ 코어 컨테이너용 스프링 프레임워크 문서
- ^ Dependency Lookup과 의존관계 주입의 차이점은 무엇입니까?- Spring Forum.Forum.springsource.org(2009-10-28)2013-11-24에 취득.
- ^ 스프링 VS EJB3
- ^ "Pitchfork FAQ". Retrieved 2006-06-06.
- ^ 스프링 AAP XML 설정
- ^ AspectJ 주석 설정
- ^ 휴지 상태 VS 스프링
- ^ "Spring Data JPA for Abstraction of Queries". Retrieved 2018-02-06.
- ^ 스프링 프레임워크의 개요
- ^ Johnson, Expert 일대일 J2EE Design and Development, Ch. 12. 등
- ^ 엔터프라이즈 애플리케이션 아키텍처의 패턴:전면 컨트롤러
- ^ "Spring Boot". spring.io.
- ^ "About Spring Boot". Retrieved 2020-03-18.
- ^ "Spring4Shell: critical vulnerability in Spring - Kaspersky official blog".
참고 문헌
- Mak, Gary (September 1, 2010). Spring Recipes: A Problem-Solution Approach (Second ed.). Apress. p. 1104. ISBN 978-1-4302-2499-0.
- Walls, Craig (October 2018). Spring in Action (Fifth ed.). Manning. p. 520. ISBN 9781617294945.
- Johnson, Rod; Höller, Jürgen; Arendsen, Alef; Risberg, Thomas; Sampaleanu, Colin (July 8, 2005). Professional Java Development with the Spring Framework (First ed.). Wrox Press. p. 672. ISBN 0-7645-7483-3.
- Harrop, Rob; Machacek, Jan (January 31, 2005). Pro Spring (First ed.). Apress. p. 832. ISBN 1-59059-461-4.
- Johnson, Rod; Jürgen, Höller (October 23, 2002). J2EE Development without EJB (First ed.). Wrox Press. p. 768. ISBN 0-7645-5831-5.
- Johnson, Rod (October 2002). Expert One-on-one J2EE Design and Development (First ed.). Wrox Press. p. 750. ISBN 0-7645-4385-7.
- Pollack, Mark; Gierke, Oliver; Risberg, Thomas; Brisbin, Jon; Hunger, Michael (October 31, 2012). Spring Data (First ed.). O'Reilly. p. 316. ISBN 978-1449323950.
- Sarin, Ashish (June 27, 2016). Getting started with Spring Framework (Third ed.). Self-published. p. 626. ISBN 978-1534985087.
- Long, Josh (August 27, 2013). Spring Framework LiveLessons (First ed.). Addison-Wesley Professional. pp. 4+ Hours. ISBN 978-0-13-346307-1.