# jhipster 맛보기
트위터 이것저것 보다가 @JHipster를 발견하였다.
# jhipster란
페이지 : http://jhipster.github.io/
- Spring boot를 이용한 생산성을 향상된 튼튼한 자바 스택 서버 사이드
- AngularJS와 Bootstrap을 이용한 모던하고 모바일에 적합한 프론트 앤드
- Yeoman, Bower, Grunt, Maven을 이용한 파워풀한 빌드 툴들
을 이용한 모던 웹앱을 Generator 이다.
# 일단 만들어보자
1.yeoman & generator-jhipster 설치
$ npm install -g yo
$ npm install -g generator-jhipster
2.JHipster yeoman으로 generate
yo jhipster
generate 이전에 몇몇 meta 정보/빌드툴에 대한 입력 및 선택이 진행 된다. (아래는 예시이다.)
? (1/15) What is the base name of your application? (jhipster)
? (2/15) What is your default Java package name? (com.mycompany.myapp)
? (3/15) Do you want to use Java 8? Yes (use Java 8)
? (4/15) Which *type* of authentication would you like to use? HTTP Session Authentication (stateful, default Spring Security mechanism)
? (5/15) Which *type* of database would you like to use? SQL (H2, MySQL, PostgreSQL, Oracle)
? (6/15) Which *production* database would you like to use? MySQL
? (7/15) Which *development* database would you like to use? H2 in-memory with Web console
? (8/15) Do you want to use Hibernate 2nd level cache? Yes, with ehcache (local cache, for a single node)
? (9/15) Do you want to use a search engine in your application? No
? (10/15) Do you want to use clustered HTTP sessions? No
? (11/15) Do you want to use WebSockets? No
? (12/15) Would you like to use Maven or Gradle for building the backend? Maven
? (13/15) Would you like to use Grunt or Gulp.js for building the frontend? Grunt (recommended)
? (14/15) Would you like to use the LibSass stylesheet preprocessor for your CSS? No
? (15/15) Would you like to enable translation support with Angular Translate? (Y/n) y
3.실행하기
- maven 경우
$mvn 혹은 $ mvn spring-boot:run
- gradle 경우
$ ./gradlew 혹은 $ ./gradlew bootRun
localhost:8080 로 실행 확인!
4.client side live reload
$ grunt serve
# Entity 더해보기
yeoman으로 엔티티도 추가할 수 있다.
$ yo jhipster:entity foo
he entity foo is being created.
Generating field #1
? Do you want to add a field to your entity? Yes
? What is the name of your field? name
? What is the type of your field? String
? Do you want to add validation rules to your field? Yes
? Which validation rules do you want to add?
=================Foo=================
name (String)
Generating field #2
? Do you want to add a field to your entity? No
=================Foo=================
name (String)
Generating relationships with other entities
? Do you want to add a relationship to another entity? No
===========Foo==============
name (String)
-------------------
? Do you want to use a Data Transfer Object (DTO)? [BETA] Yes, generate a DTO with MapStruct
? Do you want pagination on your entity? Yes, with a simple pager
Everything is configured, generating the entity...
create .jhipster/Foo.json
create src/main/java/net/jiyeon/demo/domain/Foo.java
create src/main/java/net/jiyeon/demo/repository/FooRepository.java
create src/main/java/net/jiyeon/demo/web/rest/FooResource.java
create src/main/java/net/jiyeon/demo/web/rest/dto/FooDTO.java
create src/main/java/net/jiyeon/demo/web/rest/mapper/FooMapper.java
create src/main/resources/config/liquibase/changelog/20151012163422_added_entity_Foo.xml
create src/main/webapp/scripts/app/entities/foo/foos.html
create src/main/webapp/scripts/app/entities/foo/foo-detail.html
create src/main/webapp/scripts/app/entities/foo/foo-dialog.html
create src/main/webapp/scripts/app/entities/foo/foo.js
create src/main/webapp/scripts/app/entities/foo/foo.controller.js
create src/main/webapp/scripts/app/entities/foo/foo-dialog.controller.js
create src/main/webapp/scripts/app/entities/foo/foo-detail.controller.js
create src/main/webapp/scripts/components/entities/foo/foo.service.js
create src/test/java/net/jiyeon/demo/web/rest/FooResourceTest.java
create src/test/gatling/simulations/FooGatlingTest.scala
create src/main/webapp/i18n/en/foo.json
create src/main/webapp/i18n/fr/foo.json
# 결론
yeoman generator는 진짜 무궁무진 한것 같다.
기존 MEAN 스택 관련은 몇몇가지 프로젝트를 본 적 있는데, 개인적으로는 spring-boot를 좋아하는 지라 맘에 든다.
AngularJS 뿐만 아니라 요즘 뜨고 있는 React도 되면 좋을것 같다.
Gradle, Gulp도 지원하긴 하지만 recommended 는 Maven과 Grunt.. 크게 트랜디 한 것 같진 않다.
프로젝트 열어보면 뭐 엄청 복잡해 보이는데 그만큼 기본 제공하는 기능들이 많다.
Swagger2 : http://localhost:8080/#/docs
SpringLiquibase
Application metrics : http://localhost:8080/#/metrics