Skip to content

Instantly share code, notes, and snippets.

@bclozel
Last active August 29, 2015 14:04
Show Gist options
  • Save bclozel/b2a1e04d35e691446e3b to your computer and use it in GitHub Desktop.
Save bclozel/b2a1e04d35e691446e3b to your computer and use it in GitHub Desktop.
SPR-11982 - Enhance ResourceHandlerRegistration API for resource transformers/resolvers
<!-- developement -->
<mvc:resources mapping="/resources/**" location="classpath:static/">
<mvc:resolvers>
<mvc:version-resolver>
<mvc:fixed-version version="dev" patterns="/**/*.js"/>
<mvc:content-version patterns="/**" />
</mvc:version-resolver>
<mvc:path-resolver/>
</mvc:resolvers>
</mvc:resources>
<!-- production -->
<mvc:resources mapping="/resources/**" location="classpath:static/">
<mvc:resolvers>
<mvc:caching-resolver cache="myCache"/>
<mvc:version-resolver>
<mvc:fixed-version version="${appVersion}" patterns="/**/*.js"/>
<mvc:content-version patterns="/**" />
</mvc:version-resource-resolver>
<mvc:path-resolver />
</mvc:resolvers>
<mvc:transformers>
<mvc:caching-transformer cache="myCache"/>
</mvc:transformers>
</mvc:resources>
<bean id="myCache" ... />
<!-- developement -->
<mvc:resources mapping="/resources/**" location="classpath:static/">
<mvc:resolvers>
<mvc:version-resolver>
<mvc:fixed-version version="dev" patterns="/**/*.js"/>
<mvc:content-version patterns="/**" />
</mvc:version-resolver>
<mvc:path-resolver/>
</mvc:resolvers>
<mvc:transformers>
<bean class="org.example.resources.less.LessResourceTransformer"/>
</mvc:transformers>
</mvc:resources>
<!-- production -->
<mvc:resources mapping="/resources/**" location="classpath:static/">
<mvc:resolvers>
<mvc:caching-resolver cache="myCache"/>
<mvc:version-resolver>
<mvc:fixed-version version="${appVersion}" patterns="/**/*.js"/>
<mvc:content-version patterns="/**" />
</mvc:version-resolver>
<mvc:path-resolver/>
</mvc:resolvers>
<mvc:transformers>
<mvc:caching-transformer cache="myCache"/>
<bean class="org.example.resources.less.LessResourceTransformer"/>
</mvc:transformers>
</mvc:resources>
<bean id="myCache" ... />
/**
* Dart + CSS webapp
* We could do the same for coffeeScript, TypeScript, etc
* just change the file extension accordingly in the version strategies.
*/
if (this.env.acceptsProfiles("development")) {
registry.addResourceHandler("/**")
.addResourceLocations("file:///" + getProjectRootRequired() + "/client/src/")
.addContentVersionStrategy("/**")
.addFixedVersionStrategy("/**/*.dart", "dev")
.addPathResolver()
.setCachePeriod(0);
}
else {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:static/")
.enableResourceCaching() // enable caching for resolvers *and* transformers
.addContentVersionStrategy("/**")
.addFixedVersionStrategy("/**/*.dart", "dev")
.addPathResolver();
}
/**
* JavaScript + CSS webapp
*/
if (this.env.acceptsProfiles("development")) {
registry.addResourceHandler("/**")
.addResourceLocations("file:///" + getProjectRootRequired() + "/client/src/")
.addContentVersionStrategy("/**")
.addFixedVersionStrategy("/**/*.js", "dev")
.addPathResolver()
.setCachePeriod(0);
}
else {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:static/")
.enableResourceCaching() // enable caching for resolvers *and* transformers
.addContentVersionStrategy("/**")
.addFixedVersionStrategy("/**/*.js", "dev")
.addPathResolver();
}
/**
* JavaScript + LESS webapp
* Additional example - in case we create a LESSResourceTransformer
*/
if (this.env.acceptsProfiles("development")) {
registry.addResourceHandler("/**")
.addResourceLocations("file:///" + getProjectRootRequired() + "/client/src/")
.addTransformer(new LessCssTransformer())
.addContentVersionStrategy("/**")
.addFixedVersionStrategy("/**/*.js", "dev");
.addPathResolver()
.setCachePeriod(0);
}
else {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:static/")
.enableResourceCaching() // enable caching for resolvers *and* transformers
.addResolver(new CachingResourceResolver(myCache))
.addTransformer(new CachingResourceTransformer(myCache))
.addContentVersionStrategy("/**")
.addFixedVersionStrategy("/**/*.js", "dev")
.addPathResolver();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment