Skip to content

Commit 06e2c56

Browse files
committed
Rename Spring extension + support for application resources
1 parent 2588a90 commit 06e2c56

File tree

4 files changed

+26
-12
lines changed

4 files changed

+26
-12
lines changed

docs/asciidoc/dependency-injection.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ The lifecycle of `MyController` is now managed by Guice. Also:
336336
package myapp; <1>
337337
338338
import static io.jooby.Jooby.runApp;
339-
import io.jooby.di.Springby;
339+
import io.jooby.di.Spring;
340340
341341
public class App extends Jooby {
342342
@@ -361,7 +361,7 @@ public class App extends Jooby {
361361
package myapp <1>
362362
363363
import io.jooby.runApp
364-
import io.jooby.di.Springby
364+
import io.jooby.di.Spring
365365
366366
fun main(args: Array<String>) {
367367
runApp(args) {

jooby/src/main/java/io/jooby/internal/RouterImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,8 +438,6 @@ private Route defineRoute(@Nonnull String method, @Nonnull String pattern,
438438
routeExecutor = null;
439439
source.destroy();
440440
source = null;
441-
resources.clear();
442-
resources = null;
443441
return this;
444442
}
445443

modules/jooby-spring/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<version>${jooby.version}</version>
2626
</dependency>
2727

28-
<!-- Springby -->
28+
<!-- Spring -->
2929
<dependency>
3030
<groupId>org.springframework</groupId>
3131
<artifactId>spring-context</artifactId>

modules/jooby-spring/src/main/java/io/jooby/di/Springby.java renamed to modules/jooby-spring/src/main/java/io/jooby/di/Spring.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@
2727
import org.springframework.stereotype.Controller;
2828

2929
import javax.annotation.Nonnull;
30+
import java.util.Optional;
3031

31-
public class Springby implements Extension {
32+
public class Spring implements Extension {
3233

3334
private AnnotationConfigApplicationContext applicationContext;
3435

@@ -38,25 +39,25 @@ public class Springby implements Extension {
3839

3940
private String[] packages;
4041

41-
public Springby(@Nonnull AnnotationConfigApplicationContext applicationContext) {
42+
public Spring(@Nonnull AnnotationConfigApplicationContext applicationContext) {
4243
this.applicationContext = applicationContext;
4344
}
4445

45-
public Springby() {
46+
public Spring() {
4647
this.applicationContext = null;
4748
}
4849

49-
public Springby(String... packages) {
50+
public Spring(String... packages) {
5051
this.applicationContext = null;
5152
this.packages = packages;
5253
}
5354

54-
public Springby noRefresh() {
55+
public Spring noRefresh() {
5556
this.refresh = false;
5657
return this;
5758
}
5859

59-
public Springby noMvcRoutes() {
60+
public Spring noMvcRoutes() {
6061
this.registerMvcRoutes = false;
6162
return this;
6263
}
@@ -68,7 +69,7 @@ public Springby noMvcRoutes() {
6869
String basePackage = application.getBasePackage();
6970
if (basePackage == null) {
7071
throw new IllegalArgumentException(
71-
"Springby application context requires at least one package to scan.");
72+
"Spring application context requires at least one package to scan.");
7273
}
7374
packages = new String[]{basePackage};
7475
}
@@ -89,6 +90,15 @@ public Springby noMvcRoutes() {
8990
beanFactory.registerSingleton("config", config);
9091
beanFactory.registerSingleton("environment", environment);
9192

93+
application.onStart(() -> {
94+
// Add resources:
95+
application.getResources().forEach((key, resource) -> {
96+
String name = Optional.ofNullable(key.getName())
97+
.orElseGet(() -> beanName(key.getType()));
98+
beanFactory.registerSingleton(name, resource);
99+
});
100+
});
101+
92102
application.onStop(applicationContext);
93103
}
94104
if (refresh) {
@@ -116,4 +126,10 @@ public static AnnotationConfigApplicationContext defaultApplicationContext(
116126
context.scan(packages);
117127
return context;
118128
}
129+
130+
private String beanName(Class type) {
131+
StringBuilder name = new StringBuilder(type.getSimpleName());
132+
name.setCharAt(0, Character.toLowerCase(name.charAt(0)));
133+
return name.toString();
134+
}
119135
}

0 commit comments

Comments
 (0)