스프링루
Spring Roo스프링루 2.0.x | |
개발자 | DISID, Pivotal 소프트웨어 |
---|---|
안정된 릴리스 | 1.3.2 / 2015년 9월 1일 ( |
프리뷰 릴리즈 | 2.0.0.RELEASE / 2019년 9월 30일( |
기입처 | 자바 |
플랫폼 | 자바 SE |
유형 | 신속한 응용 프로그램 개발 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | projects |
Spring Roo는 Java 기반 엔터프라이즈 [1]소프트웨어의 신속한 애플리케이션 개발을 위해 관습 오버 구성 원칙을 사용하는 오픈 소스 소프트웨어 도구입니다.그 결과 어플리케이션에는 Spring Framework, Java Persistence API, Thymeleaf, Apache Maven 및 AspectJ와 [2]같은 일반적인 Java 기술이 사용됩니다.Spring Roo는 Spring 프로젝트 포트폴리오의 멤버입니다.
동기 및 이력
Spring Roo의 미션 스테이트먼트는 "엔지니어링의 무결성이나 유연성을 해치지 않고 Java 개발자의 생산성을 근본적으로 향상시키는 것"[3]입니다.
이 테크놀로지는 2009년 4월 27일 Spring One 유럽 개발자 컨퍼런스의 오프닝 키노트에서 처음 시연되었으며, 최초 알파 릴리즈가 동시에 발표되었습니다.기조연설에서는 회의 참석자가 프로젝트 이름을 투표하기 위해 사용하는 어플리케이션이 라이브 무대에서 작성되었습니다(당시 Spring [4]Source에서는 "Roo"라는 코드명으로 되어 있었습니다).결국 스프링루라는 이름은 스프링부스트, 스프링스파크, 스프링하이퍼드라이브, 스프링다트 [5]등의 대안보다 선호됐다.
그 후, Roo 1.0.0을 포함한 [6][7]몇개의 릴리스가 개시되었습니다.2009년 12월에 발매된 릴리즈(일반 가용성).2010년 10월, Spring Roo 1.1.0.RELEASE가 출시되었습니다.1.1.0 릴리즈는 OSGi 기반과 관련된 애드온 디스커버리 모델로 이행하여 데이터베이스 리버스 엔지니어링, Spring MVC 페이지 복잡성 경감, Google Web Toolkit, Google App Engine, Apache Solr, JSON 및 시리얼 가능 자동화 [8]등의 소규모 기능을 추가하였습니다.현재 Roo 프로젝트 엔지니어는 Spring Source에 채용되어 있으며, Roo 릴리즈는 일반적으로 다른 Spring 포트폴리오 프로젝트의 최신 릴리스를 지원합니다.
2014년 DISID는 Pivotal과의 파트너십 계약 후 오픈 소스 프레임워크 Spring Roo의 리더십을 이어받았습니다.그들은 Spring Roo 프로젝트의 추가 개발에 협력합니다.Roo는 코드 생성 스타일의 RAD 프레임워크를 제공하는 목표를 계속할 것입니다.
Spring Roo 프로젝트는 Spring에 따라 오픈소스 프로젝트로 유지되며 현행 라이선스 정책을 그대로 유지합니다.Pivotal과 DISID는 모두 Spring과 Java의 커뮤니티에 프로젝트 협업을 원하는 사람을 요청하고 있습니다.
표준과 테크놀로지의 호환성
Roo의 디폴트 인스톨에서는, 다음의 표준과 주요한 [9]테크놀로지에 준거한 애플리케이션을 간단하게 작성할 수 있습니다.
- Apache ActiveMQ(임베디드 JMS 구현)
- Apache Maven (버전 3.2 이후)
- Apache Tomcat(임베디드 실행 지원)
- Aspect J(AOP 및 우려사항 분리를 위한 믹스인에 사용)
- AspectJ 개발 도구(Eclipse 플러그인)
- 부트스트랩(버전 3.3.6 이후)
- 클라우드 컴퓨팅(SpringSource Cloud Foundry, Google App Engine 및 VMforce 사용)
- Eclipse IDE(동시 실행 및 프로젝트 메타데이터 생성)
- Eclipse Link(JPA 구현)
- 휴지 상태(JPA 구현)
- Java Bean 검증(JSR303) (휴면 상태 검증기 포함)
- XML Web Services용 Java API(서비스와 클라이언트 모두)
- Java 메시지 서비스(메시지 제작자와 소비자 모두)
- Java Persistence API(복수 구현)
- Java 트랜잭션 API(Spring 트랜잭션 추상화 사용)
- Java(버전 5, 6, 또는 7).Java 7은 Roo 1.2.[10]4 이후 지원됩니다.
- JQuery(버전 1.11 이후)
- JSON(REST 지원)
- JUnit(사용자 프로젝트용 자동 테스트)
- Log4J(설치 및 구성)
- OSGi(Roo 툴은 OSGi를 기반으로 구축)
- 대표 상태 전송(REST)
- 스프링 부트(버전 1.4 이후)
- 스프링 데이터 JPA(버전 1.10 이후)
- 스프링 프레임워크(버전 4 이상)
- 스프링 보안(버전 4 이상)
- 스프링 웹 흐름(설치 및 흐름 정의)
- SpringSource Tool Suite(STS에는 Roo 셸과 Roo 명령어 도우미가 내장되어 있습니다)
- Tymeleaf(버전 3 이상)
위의 목록은 Roo의 확장 방법을 제공하는 추가 Roo 추가 기능을 통해 확장할 수 있습니다.
사용자 인터페이스
Spring Roo의 주요 사용자 인터페이스는 명령줄 셸입니다.셸은 명령줄 인터페이스와 플러그인을 호스트하는 메커니즘(Roo에서는 "add-ons"라고 함)을 모두 제공합니다.Roo의 주요 설계 목표 중 하나는 사용자가 '자연스러운 방법'으로 작업을 계속할 수 있도록 하는 것입니다.일반적으로 사용자가 선호하는 통합 개발 환경(IDE) 또는 텍스트 에디터를 대부분의 작업에 사용하는 것을 의미합니다.이와 같이 Roo는 IDE 또는 텍스트에디터의 다른 창에 로드되어 Roo 이외의 사용자가 변경한 내용이 없는지 파일 시스템을 감시합니다.또한 사용자의 프로젝트 시작 시 스캔을 수행하여 Roo가 실행되지 않은 동안 변경되었을 수 있는 사항을 확인합니다.
사용자 인터페이스 셸은 명령줄 완료(즉, TAB를 누름), 온라인 도움말, 힌트(상황에 맞는 도움말의 한 형태) 및 컨텍스트 인식(최근 활동을 기반으로 가능한 의도를 자동으로 추론하는 기능)을 포함한 광범위한 사용적합성 기능을 지원합니다.이를 통해 사용자는 Roo 쉘을 통해 새로운 소프트웨어 프로젝트를 만들거나 기존 프로젝트에서 Roo를 사용할 수 있습니다.다음으로 Roo가 새로운 어플리케이션을 작성하기 위해 사용하는 명령어와 임베디드HTTP 서버를 사용하여 어플리케이션을 컴파일 및 실행하기 위한 Spring Boot Maven 플러그인 실행 목표를 나타냅니다.
$mkdir hello $ cd hello $ roo.shroo> 프로젝트 셋업 --top Level Package com.foo roo > jpa setup -- 프로바이더 HIBERNATE -- 데이터베이스 HYPERNIC_IN_MEMORY roo> 엔티티 jpa --class ~.domain.타이머 roo> 필드 문자열 --fieldName 메시지 --notNull roo> 저장소 jpa --all roo> service --all roo> web mvc view setup --type TYMELEAP roo> web mvc controller --all --path fix spring roo/mvapi $ roo
위의 명령어는 모두 입력할 필요가 없으며 TAB을 사용하여 완료했습니다.또한 "hint" 명령을 사용하여 언제든지 도움말을 볼 수 있습니다.
아키텍처
소프트웨어가 자동으로 [11]코드를 생성할 수 있는 방법은 여러 가지가 있지만 Roo는 AspectJ 유형 간 선언(믹스인 또는 인트로덕션이라고도 함)을 생성함으로써 작동합니다.이는 Roo가 관리하는 코드가 사용자가 작성하는 코드와 다른 컴파일 단위에 있기 때문에 우려 사항을 분리할 수 있습니다.즉, Roo는 필요한 AspectJ 유형 간 선언을 점진적으로 수정하고 다른 모든 파일을 그대로 [12][13][14]유지할 수 있습니다.
Spring Roo는 애드온을 사용하여 Apache Felix 기반의 OSGi 런타임 시스템 내 및 그 위에 모든 기능을 제공합니다.
기본 애드온
Roo에서는, 인스톨 되고 있는 「베이스 애드 온」(Roo 에 부속되어 있는 것)과 「서드 파티의 애드 온」(Roo 에 부속되어 있지 않은 것)에 의해서, 수많은 커맨드를 사용할 수 있습니다.Roo 2.0.x 에 부속된 기본 애드온에는 다음이 포함됩니다.
- 애드온 크리에이터: 서드파티제의 Roo 애드온을 쉽게 작성할 수 있습니다.
- 백업: 를 입력하여 ZIP 파일에 백업을 만들 수 있습니다.
backup
- Bean Info: JavaBean 속성, 접근자 및 뮤테이터 메타데이터(주로 다른 애드온에서 사용)를 표시합니다.
- 구성 가능: Spring Framework의 @Configurable 주석 도입(주로 다른 애드온에서 사용)
- 데이터베이스 리버스 엔지니어링: 릴레이셔널 데이터베이스의 증분 리버스 엔지니어링 가능
- Data on Demand: 엔티티에 존재하는 JSR303(JavaBean Validation) 주석 준수 시드 데이터 제공
- DTO: 데이터 전송 객체 자동 유지 보수에 대한 광범위한 지원
- 이메일: Javamail을 통한 SMTP 기반 이메일 및 메일 발송인 지원 설정 간소화
- 엔티티: Java Persistence API @Entity 클래스의 자동 유지보수를 광범위하게 지원합니다.
- Java Bean: @RooJavaBean 주석을 가진 클래스의 JavaBean getters/setters를 자동으로 유지 관리합니다.
- JDBC: OSGi 준거 JDBC 드라이버에 대한 액세스를 다른 번들로 캡슐화(주로 다른 애드온에서 사용)
- JMS: JMS 프로바이더 접속(또는 ActiveMQ 내장) 및 JMS 메시지 송수신을 심플화
- JPA: 지정된 JPA 공급자를 설치하고 그에 따라 JDBC를 설정합니다.
- JSON: JSON 관련 시리얼화 및 역직렬화 메서드를 POJO에 추가
- 로깅: Log4j 설정(명령어 기반 로그 수준 구성 포함)
- 복수화: 명사의 복수화를 제공합니다(주로 다른 애드온에서 사용).
- Property Editor: Spring MVC의 요구에 따라 Property Editor를 관리합니다.
- 속성 파일: Java 속성 파일을 관리하고 속성 값을 읽기, 설정 및 삭제하는 셸 명령을 제공합니다.
- 보안: 로그인 페이지, 필터 및 의존관계를 포함한 Spring Security 설정
- 테스트: 프로젝트 클래스의 JUnit 통합 테스트를 생성합니다.
- ToString: @RooToString 주석을 가진 모든 클래스에 대해 유효한 toString() 메서드를 생성합니다.
- Web Flow: Spring Web Flow를 설치하고 기본 플로우를 만듭니다.
- Web MVC: Spring MVC와 Thymeleaf 템플릿 및 RESTful API를 기반으로 뷰 레이어를 유지합니다.
- WS: SOAP 서비스 및 SOAP 클라이언트 생성
Roo 코어 모듈
또한 Roo에는 다양한 애드온에 대해 호스트 실행 환경을 제공하는 핵심 모듈 세트가 포함되어 있습니다.주요 모듈에는 다음이 포함됩니다.
- 지원: 코어 모듈 및 애드온에서 공통 유틸리티 클래스 지원 서비스에 사용
- 메타데이터: 의존관계 등록 및 캐싱을 포함한 메타데이터 서비스 프로바이더 인터페이스 및 구현 제공
- 파일 모니터: 검출된 파일 시스템 변경 후 이벤트를 게시합니다(기본 구현에서는 자동 확장 디스크 폴링이 사용됩니다).
- 파일 실행 취소: 프로세스 관리자가 사용할 수 있는 파일 실행 취소 기능을 제공합니다.
- 프로젝트: Apache Maven 및 Apache Ant와 같은 일반적인 최종 사용자 프로젝트 구축 시스템을 추상화합니다.
- 프로세스 매니저: 디스크 롤백 및 프로세스 동기화를 포함한 ACID와 같은 파일 시스템 추상화 제공
- Classpath: Java 및 AspectJ 컴파일 유닛의 추상 구문 트리 해석 및 유형 바인딩을 수행합니다.
- Felix: Roo 쉘에서 "osgi" 명령어를 제공하는 등 Apache Felix와 통합됩니다.
- OBR: Apache Felix OSGi 번들 저장소 기능 추가
- URL 스트림: 다양한 호스트 환경(Roo 쉘, IDE 내장)에서 다운로드에 대한 액세스를 캡슐화하고 Pretty Good Privacy 기반 httppgp:// 프로토콜 핸들러를 적용합니다.
차별화
Spring Roo는 다음과 같은 주요 방법으로 [15]컨벤션 오버 컨피규레이션의 고속 애플리케이션 개발 툴과 차별화됩니다.
- Java 플랫폼의 생산성:Roo는 Java 개발자를 위한 생산성 솔루션을 제공합니다.사용자는 Java 이외의 언어로 프로그래밍할 필요가 없습니다.또, 메인스트림의 Java 엔터프라이즈 애플리케이션 표준과 테크놀로지(상기 기재)를 사용하고, 기존의 개발자의 지식, 스킬, 경험을 최대한으로 재사용할 수 있습니다.
- 조작성:Roo의 셸은 트레이닝 요건을 최소화하는 검출 가능한 사용하기 쉬운 환경을 제공하도록 설계되었습니다.Roo 주석 모두 코드 어시스트(IDE 명령줄 완료)를 위해 @Roo로 시작합니다.사용자는 자신의 IDE를 모든 작업에 사용할 수 있으며 Roo가 실행 중임을 알 필요가 없습니다.또한 Roo는 Roo가 실행되지 않을 때 사용자의 파일 편집도 지원합니다.
- 런타임 없음:Roo는 런타임 API를 제공하지 않으며 특정 런타임 컴포넌트가 필요하지 않습니다.이것에 의해, 실행시에 Roo 관련의 CPU, 메모리, 및 디스크 스토리지의 자원을 소비하지 않게 됩니다.Roo 코드는 설치 공간이 적은 클라우드 구축 및 높은 확장성 사용 사례에 맞게 최적화되었습니다.
- 록인 회피: 사용자 프로젝트에서 Roo를 신속하게 삭제할 수 있어 벤더 록인으로부터 보호할 수 있습니다.이는 제거할 런타임 컴포넌트가 없기 때문에 가능합니다.@Roo 주석은 (컴파일된 *.class [16]파일에 저장되지 않도록) "소스 보존"일 뿐이며 Roo의 AspectJ 유형 간 선언은 표준 *.java 컴파일 [17][18]유닛에 " 푸시"할 수 있기 때문입니다.
- 확장성:Roo의 코어 인프라스트럭처와 베이스 애드온을 분리함으로써 서드파티가 Roo를 [19][20]쉽게 확장할 수 있게 됩니다.
「 」를 참조해 주세요.
- 철골(프레임워크)
- Griffon (프레임워크)– Grails에서 영감을 얻은 데스크톱 프레임워크
- 플레이 프레임워크
레퍼런스
- ^ Paul Krill의 "InfoWorld: SpringSource CEO가 새로운 자바 확장 기능인 Roo를 홍보합니다." 2009-06-01년 날짜.
- ^ Alex Handy의 "SD Times: Roo"는 반복적인 스프링 태스크를 처리하기 위해 출시되었습니다.2009-10-19년 날짜.
- ^ "Spring Roo 참조 문서", 미션 스테이트먼트 섹션, 2010-2-21 취득.
- ^ 「테크 비디오: The Future of Java Innovation' (자바 혁신의 미래) 2009-10-09년 Rod Johnson (Spring Source CEO)에 의해 Wayback Machine에서 아카이브되었습니다.2009년 10월 17일 취득.
- ^ "Spring Roo 참조 문서", 이력 섹션, 2010-2-21 취득.
- ^ Srini Penchikala의 "InfoQ: Spring Roo 1.0 M1 출시" 2009-5-31 날짜.
- ^ "Spring Roo Project 릴리즈의 Jira 문제 추적"; 2010년 2월 21일 취득.
- ^ "빅홉 포워드: Spring Roo 1.1.0 출시!"2010-10-28 Wayback Machine에서 Ben Alex (Spring Source의 Spring Roo 책임자)에 의해 아카이브 완료.2010-10-27 취득.
- ^ Ken Rimple의 "TechCast: Spring Roo 팟캐스트" 2010년 2월 21일 취득.
- ^ "스프링 루 1.2.4.릴리즈는 2013년 10월 17일자로 입수 가능합니다.
- ^ Srini Penchikala의 "InfoQ: Java 개발에서의 코드 생성 역할"(2009-9-3일자).
- ^ "InfoQ: Spring Roo 1.0.0 비디오 프레젠테이션 소개" (Spring Source의 Spring Roo 리더)2010-2-21 취득.
- ^ 마시밀리아노 데시의 "JAX Italia 2009 Conference: Spring Roo" 2010-2-21 취득.
- ^ Ken Rimple의 "Philadelphia Java User Group: Spring Roo" 2010-2-21 취득.
- ^ '봄의 Roo 홈페이지' 2010년 2월 21일 취득.
- ^ Sun Java 5 JavaDocs for Retention Policy.Sun Microsystems의 SOURCE. 2009-10-17.
- ^ Andrew Eisenberg(SpringSource의 AJDT 프로젝트 책임자)의 "AJDT를 위한 푸시 인 리팩터링"2009년 10월 17일 취득.
- ^ "Eclipse AJDT 인터타입 및 푸시인 리팩터링" 2010-01-17년 Dhruba Bandopadhyay에 의해 웨이백 머신에 아카이브됨; 2009-12-31 날짜.
- ^ Massimiliano Dessi의 "이탈리아 자바 사용자 그룹 JavaDay IV 컨퍼런스: Spring Roo Internals" 2010-2-21 취득.
- ^ '봄, 루, 알프레스코도' Alfresco가 봄에게 준 것과 왜? Jeff Potts의 2009-12-16일자.