Spincast is an highly flexible and open source Java web framework, based on Guice.
Please note that Spincast is no longer maintained.
public class App { public static void main(String[] args) { Spincast.init(args); } @Inject protected void init(DefaultRouter router, Server server) { router.GET("/").handle(context -> context.response().sendHtml("<h1>Hello World!</h1>")); server.start(); } }
public class App { public static void main(String[] args) { Spincast.configure() .module(new AppGuiceModule()) .plugin(new SpincastHttpClientPlugin()) .plugin(new SpincastJdbcPlugin()) .plugin(new SpincastFormsProtectionPlugin()) .plugin(new SpincastScheduledTasksPlugin()) .plugin(new SpincastSessionPlugin()) .requestContextImplementationClass(AppRequestContextDefault.class) .init(args); } @Inject protected void init(AppRouter router, AppServer server) { router.methods(HttpMethod.POST, HttpMethod.PUT) .path("/users/${userId:<N>}") .accept(ContentTypeDefaults.JSON) .handle(context -> { context.response().setCacheSeconds(3600); context.response().setCookie1year("myCookie", context.customMethodYouDefined()); context.response().setHeader("x-powered-by", "Robert'); DROP TABLE Students;--"); JsonObject userObj = context.json().create(); userObj.set("user.id", context.request().getPathParam("userId")); userObj.set("user.timeZone", context.getTimeZoneToUse()); userObj.set("user.locale", context.getLocaleToUse()); System.out.println(userObj.toJsonString(true)); // { // "user" : { // "id" : "42", // "timeZone" : "America/New_York", // "locale" : "en_US" // } // } context.response().sendXml(userObj); }); server.start(); } }
Spincast is a java web framework to serve as a backend for Single Page Applications (SPA
),
to develop HTML
generated websites or
to be a REST API
services platform.
Spincast is based on Guice from the ground up. It is very flexible: each part can be tweaked/overridden, even the core classes. There are no static methods and no private methods.
Spincast aims to feel more like a library than like a framework. It is not opinionated and favors configuration over convention. Its main goal is to give power to the developers.
Spincast is composed of a small core and a big plugins ecosystem. You choose what your application needs.
The embedded server
makes everything easy to develop, test and deploy... When
deployed, the application is fully contained,
in a single executable .jar
file.
Spincast's powerful router is injectable
and dynamic. That means you can add and remove
routes
from anywhere in your application, at any time.