2727import org .springframework .stereotype .Controller ;
2828
2929import 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