설치
Spider Silk는 Java 25 이상이 필요하다.
릴리스는 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를 함께 가져오므로, 요청을 처리하는 데 더 추가할 것이 없다.
대신 외부 서블릿 컨테이너에 배포하려면 배포를 참고한다.
모듈
모듈은 네 묶음으로 나뉜다. 필요한 것은 코어 묶음뿐이며, 나머지는 코어와 같은 방식으로 하나씩 추가한다.
코어
모든 애플리케이션이 이 둘을 쓴다.
| 모듈 | 내용 |
|---|---|
|
jte 템플릿, 내장 Jetty, 그리고 프레임워크가 그 위에 지어진 JSON 라이브러리인 silk-json을 포함한 프레임워크 |
|
테스트 범위의 |
확장
확장은 선택 사항이다. 그 모듈이 가리키는 것을 코어 기본값 대신, 또는 그 곁에 쓰고 싶을 때만 추가한다.
| 모듈 | 이럴 때 쓴다 |
|---|---|
서버: 코어 기본값은 Jetty이며, 고르는 기준은 서버 고르기에서 다룬다 |
|
|
|
|
|
템플릿: 코어 기본값은 jte다 |
|
|
|
|
|
|
|
기능 |
|
|
|
|
|
|
|
|
OpenTelemetry Java 에이전트 확장: 매칭된 라우트로 이름 붙은 스팬, jar는 의존성으로 추가하지 않고 에이전트에 건넨다 |
빌드
빌드 모듈은 선택적인 패키징 관례인 미리 컴파일한 jte, Jib 이미지, 네이티브 빌드와, JSON 코덱 생성기를 담는다.
| 모듈 | 빌드 도구 |
|---|---|
|
Gradle, 플러그인 |
|
Maven, 부모 POM으로 쓴다 |
|
어느 빌드 도구에서든 javac이 애너테이션 프로세서로 실행한다: |
좌표, 패키지, 모듈 이름
net.benelog.spidersilk이라는 한 문자열이 의도적으로 세 가지 용도로 쓰인다.
| 어디에 | 무엇인가 |
|---|---|
그룹 id |
|
패키지 루트 |
|
|
jar가 담는 패키지 루트로, |
Gradle 플러그인은 같은 id인 net.benelog.spidersilk으로 적용되고, Maven 부모 POM은 net.benelog.spidersilk:spider-silk-maven-parent다.
독립된 라이브러리인 silk-json은 자신의 문자열인 net.benelog.silkjson 아래에서 같은 규칙을 따른다: 아티팩트 net.benelog.silkjson:silk-json과 net.benelog.silkjson:silk-json-processor, 패키지 루트 net.benelog.silkjson, 그리고 프로세서의 net.benelog.silkjson.processor다.
결정 32가 그 근거를 제시한다.