설치
Spider Silk는 Java 21 이상이 필요하다. 릴리스는 Maven Central에 게시되므로, 빌드에는 기본 저장소 외의 저장소가 필요 없다. 현재 버전은 `1.1.0`이다. CHANGELOG.md가 각 릴리스에서 바뀐 것을 나열한다.
Gradle
repositories {
mavenCentral()
}
dependencies {
implementation 'net.benelog.spidersilk:spider-silk-core:1.1.0'
testImplementation 'net.benelog.spidersilk:spider-silk-test:1.1.0'
}
Maven
Maven은 기본적으로 Central에서 해석하므로, `pom.xml`은 의존성만 선언하고 그 밖에는 아무것도 선언하지 않는다:
<dependencies>
<dependency>
<groupId>net.benelog.spidersilk</groupId>
<artifactId>spider-silk-core</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>net.benelog.spidersilk</groupId>
<artifactId>spider-silk-test</artifactId>
<version>1.1.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Hello, world
import net.benelog.spidersilk.App;
import net.benelog.spidersilk.WebResponse;
public class Main {
public static void main(String[] args) {
App app = new App();
app.get("/hello/{name}", req -> WebResponse.text("Hello, " + req.pathParam("name")));
app.start(8080);
}
}
$ curl localhost:8080/hello/silk
Hello, silk
spider-silk-core`는 내장 Jetty를 함께 가져오므로, 요청을 서비스하는 데 그 밖에는 아무것도 필요 없다.
같은 앱을 내장 Tomcat이나 Undertow에서 실행하려면 `spider-silk-tomcat`이나 `spider-silk-undertow`를 추가한다; 서버 고르기을 참고한다.
대신 외부 서블릿 컨테이너에 배포하려면 배포를 참고한다.
템플릿은 별도 설정 없이 jte로 렌더링된다.
FreeMarker, Handlebars, Thymeleaf는 별도의 모듈이며, 같은 방식으로 추가한다.
`spider-silk-jetty-websocket은 WebSocket 엔드포인트를 추가하며, Jetty에서만 동작한다.
spider-silk-openapi는 라우트 목록을 OpenAPI 문서로 바꾼다.
좌표, 패키지, 모듈 이름
`net.benelog.spidersilk`은 하나의 문자열이며, 의도적으로 세 가지 방식으로 쓰인다.
| 어디에 | 무엇인가 |
|---|---|
그룹 id |
|
패키지 루트 |
|
|
jar가 담는 패키지 루트로, |
Gradle 플러그인은 같은 id인 `net.benelog.spidersilk`으로 적용되고, Maven 부모 POM은 `net.benelog.spidersilk:spider-silk-maven-parent`다. 결정 32가 그 근거를 제시한다.