Custom scopes in CDI 1.0 and Spring 3.1
Join the DZone community and get the full member experience.
Join For FreeThis blog post describes in short how to implement custom scopes in CDI
using Weld 1.1 and Spring 3.1. To get basic information on scoping see
the Spring reference or the Weld reference respectively.
Custom scopes in Spring
In Spring you have to implement your custom scope using the Scope interface. I have implemented a custom scope as a copy of request scope for illustration:
package com.mycompany.springapp.scope; import org.springframework.beans.factory.config.Scope; import org.springframework.web.context.request.AbstractRequestAttributesScope; import org.springframework.web.context.request.RequestAttributes; public class MyCustomScope extends AbstractRequestAttributesScope implements Scope { @Override protected int getScope() { return RequestAttributes.SCOPE_REQUEST; } /** * There is no conversation id concept for a request, so this method * returns <code>null</code>. */ public String getConversationId() { return null; } }Then you register your new scope like this in your beans.xml:
You can then use it like all the other built-in scopes:
package com.mycompany.springapp.scope; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @Component @Scope("custom") public class MyCustomScopedService { }
See here for additional information.
Custom scopes with CDI
In CDI - according to the CDI programming model - you first define your own scope annotation:
You assign your new scope annotation to the beans that are instintiated in this scope:
@CustomScoped public class MyCustomScopeService { ... }To register the scope create this class and drop it together with your application into the CDI enabled container. The CDI runtime will register it automatically.
See this blog entry for a comprehensive example.
Nothing to complain about! Both technologies perfectly support extensions for scopes and context.
From http://niklasschlimm.blogspot.com/2011/07/custom-scopes-in-cdi-10-and-spring-31.html
CDI
Spring Framework
Opinions expressed by DZone contributors are their own.
Comments