Skip to content

Commit 5646e0f

Browse files
committed
added example Spring Boot Starter
1 parent 43e82f7 commit 5646e0f

20 files changed

Lines changed: 548 additions & 0 deletions

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
eventstarter:
2+
listener:
3+
enabled-events:
4+
- foo
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
plugins {
2+
id 'org.springframework.boot' version '2.1.7.RELEASE'
3+
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
4+
id 'java'
5+
}
6+
7+
group = 'io.reflectoring'
8+
version = '0.0.1-SNAPSHOT'
9+
sourceCompatibility = '11'
10+
11+
repositories {
12+
mavenCentral()
13+
}
14+
15+
dependencies {
16+
implementation project(':event-starter')
17+
implementation 'org.springframework.boot:spring-boot-starter-web'
18+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
19+
20+
compileOnly('org.projectlombok:lombok:1.18.2')
21+
annotationProcessor 'org.projectlombok:lombok:1.18.2'
22+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.reflectoring.starter;
2+
3+
import org.springframework.scheduling.annotation.Scheduled;
4+
import org.springframework.stereotype.Component;
5+
6+
@Component
7+
class EventGenerator {
8+
9+
private final EventPublisher eventPublisher;
10+
11+
public EventGenerator(EventPublisher eventPublisher) {
12+
this.eventPublisher = eventPublisher;
13+
}
14+
15+
@Scheduled(fixedRate = 2000)
16+
void generateEvent() {
17+
Event event = new Event("foo", "This is a foo event");
18+
eventPublisher.publishEvent(event);
19+
}
20+
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.reflectoring.starter;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.stereotype.Component;
5+
6+
@Slf4j
7+
@Component
8+
class FooEventListener extends EventListener {
9+
10+
public FooEventListener(EventListenerProperties properties) {
11+
super(properties);
12+
}
13+
14+
@Override
15+
public String getSubscribedEventType() {
16+
return "foo";
17+
}
18+
19+
@Override
20+
public void onEvent(Event event) {
21+
log.info("received event {}", event);
22+
}
23+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.reflectoring.starter;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.scheduling.annotation.EnableScheduling;
6+
7+
@SpringBootApplication
8+
@EnableScheduling
9+
public class StarterApplication {
10+
11+
public static void main(String[] args) {
12+
SpringApplication.run(StarterApplication.class, args);
13+
}
14+
15+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
eventstarter.enabled=true
2+
event
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.reflectoring.starter;
2+
3+
import org.junit.Test;
4+
import org.junit.runner.RunWith;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.boot.test.context.SpringBootTest;
7+
import org.springframework.test.context.junit4.SpringRunner;
8+
import static org.assertj.core.api.Assertions.*;
9+
10+
@RunWith(SpringRunner.class)
11+
@SpringBootTest
12+
public class StarterApplicationTests {
13+
14+
@Autowired(required = false)
15+
private EventPublisher eventPublisher;
16+
17+
@Test
18+
public void eventPublisherIsAvailable() {
19+
assertThat(eventPublisher).isNotNull();
20+
}
21+
22+
}

spring-boot/starter/build.gradle

Whitespace-only changes.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
plugins {
2+
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
3+
id 'java'
4+
}
5+
6+
group = 'io.reflectoring'
7+
version = '0.0.1-SNAPSHOT'
8+
sourceCompatibility = '11'
9+
10+
repositories {
11+
mavenCentral()
12+
}
13+
14+
dependencyManagement {
15+
imports {
16+
mavenBom("org.springframework.boot:spring-boot-dependencies:2.1.7.RELEASE")
17+
}
18+
}
19+
20+
dependencies {
21+
compileOnly 'org.springframework.boot:spring-boot-starter'
22+
annotationProcessor 'org.springframework.boot:spring-boot-autoconfigure-processor'
23+
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
24+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
25+
26+
compileOnly('org.projectlombok:lombok:1.18.2')
27+
annotationProcessor 'org.projectlombok:lombok:1.18.2'
28+
}
29+
30+
compileJava.dependsOn(processResources)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.reflectoring.starter;
2+
3+
import lombok.ToString;
4+
import lombok.Value;
5+
6+
@Value
7+
@ToString
8+
class Event {
9+
10+
private String type;
11+
private String payload;
12+
13+
}

0 commit comments

Comments
 (0)