블로그 이미지
Max.

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Notice

2015.09.18 11:16 개발관련

spring roo 1.3.1 버전에서


1) Test 클래스에 @WebAppConfiguration 추가

2) pom.xml 의 servlet dependency 를  3.0.1로 변경


끝.

저작자 표시
신고
posted by Max.
2015.09.03 10:49 개발관련

여기저기 인터넷 자료를 보면, 쉽게 될것 같은데 안된다. 해서 정리한다.


먼저 swagger를 통해 하려고 하는 것이 http://petstore.swagger.io/ 여기처럼 만드는 것이다. API를 설명도 하고 테스트도 할수 있는 것인데, 자동 생성 툴을 이용해 해당 사이트를 쉽게 만들어 내면 된다.


크게 두가지를 해야 한다. 첫번째는 API 코드를 통해서 json을 생성하고, 두번째는 해당 UI 사이트 소스(html,js)를 웹서버에 올려야 한다. 후자는 단순히 https://github.com/swagger-api/swagger-ui 에서 소스코드를 내려받고 dist 에 있는 파일들을 웹서버(tomcat같은)에 올려 놓으면 끝이다. /webapp 아래에 적당히 위치하면된다.


이제 첫번째 json만 생성하면 된다. 이것을 생성하기 위해 제목의 springfox swagger2 를 이용하는 것이다. 3가지를 하고 local tomcat을 실행하면, json이 생성된다.


1. maven dependency 추가


<dependency>

   <groupId>io.springfox</groupId>

   <artifactId>springfox-swagger2</artifactId>

   <version>2.1.2</version>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>2.1.2</version>

</dependency>   

<dependency>

   <groupId>com.fasterxml.jackson.core</groupId>

   <artifactId>jackson-databind</artifactId>

   <version>2.5.0</version>

</dependency>

혹시 찾지 못하면, repository를 추가한다.


   <repository>

     <id>jcenter-snapshots</id>

     <name>jcenter</name>

     <url>https://jcenter.bintray.com/</url>

   </repository> 


2. config java 파일 추가 


@Configuration

@EnableWebMvc

@EnableSwagger2

public class SwaggerConfiguration {


@Bean

public Docket api(){

   return new Docket(DocumentationType.SWAGGER_2)

   .select()

   .apis(RequestHandlerSelectors.any())

   .paths(springfox.documentation.builders.PathSelectors.regex("/api/.*"))

   .build()

   .apiInfo(apiInfo());

}

private ApiInfo apiInfo() {

   ApiInfo apiInfo = new ApiInfo("Api Documentation", "Api Documentation", "1.0", "urn:tos",

           "Contact Email", "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0");

   return apiInfo;

}

}

3. webmvc-config.xml에 bean 추가


<mvc:annotation-driven/>

<bean class="xxx.yyy.zzz.config.SwaggerConfiguration" />


이제 tomcat를 실행하면 아래와 같은 로그를 확인하고 json 위치를 호출해 본다. 


INFO ... Mapped "{[/v2/api-docs],methods=[GET]}"  ...

INFO ... Mapped "{[/swagger-resources]}" onto org ...

INFO ... Mapped "{[/configuration/ui]}" onto org. ...

INFO ... Mapped "{[/configuration/security]}" ont ...


로그 대로라면, http://localhost:8008/v2/api-docs 정도가 될것이고, swagger ui 사이트 상단 입력박스에 넣어서 확인할수 있다.


기본적인 연동은 이렇게 하고, 보다 상세한 고급기능은 해당 사이트에서 Reference를 참조하자. 끝.



저작자 표시
신고
posted by Max.
2015.08.07 10:39 개발관련

Roo 는 java8을 지원한다. https://spring.io/blog/2014/11/21/spring-roo-1-3-0-introduces-jdk-8-support 처럼 말이지... Roo 콘솔에서도 떡 하니, --java 에 8,9가 있고 명령을 실행해도 오류가 나지 않는다.


문제는 생성된 pom.xml 파일이 java 1.6으로 되어 있어서 1.8로 고치고 빌드 하면 오류가 없다. 하지만 톰캣으로 실행하면 spring 3.2.x 버전 때문에 java8에 대한 오류가 나온다. 다시 spring 4.x로 maven dependency를 바꾸면 이제야 오류없이 실행된다. 손이 많이 가는 Roo다. 자랑하는 '빠른 개발을 위한 것'은 이런것들이 잘 되었다는 가정이 있었다는게 함정인가? 


아무튼 현재는 Roo2.0 이 개발되고 있다(https://github.com/spring-projects/spring-roo/graphs/contributors). 아직 오류가 많아 쓰긴 힘들다. 


Roo는 내 기준으로 빠른 개발을 위한 무엇은 처음부터 없었다. 다른 장점들이 이것을 계속 쓰게하는 이유인데, 그것은 아주 오래전 일로부터 시작된 것이다.

저작자 표시
신고
posted by Max.