Allow applications to chose not to use CGLIB proxies for @SpringBean injections
-------------------------------------------------------------------------------

                 Key: WICKET-2573
                 URL: https://issues.apache.org/jira/browse/WICKET-2573
             Project: Wicket
          Issue Type: Improvement
          Components: wicket-spring
    Affects Versions: 1.4.3, 1.5-M1
            Reporter: Kenny MacLeod
            Priority: Minor


Spring beans fetched from the spring context and injected into wicket 
components are currently proxied using CGLIB before being injected. These 
proxies are serializable, as required by the Servlet specification.

However, this proxying puts restrictions on the beans being injected. If CGLIB 
cannot create the proxy (e.g. if the class to proxy has no default constructor, 
although there are other scenarios), then this technique does not work. Given 
that Spring beans can take on many obscure forms (Spring is less restrictive 
than CGLIB), this means that not all Spring beans can be injected.

The simplest solution to this problem is to allow applications to specify that 
the injected Spring beans should not be proxied. Clearly, this should not be 
the default behaviour, since there's no guarantee that Spring beans are 
properly serializable. However, in many cases the developer knows this not to 
be an issue, either because they know the Spring beans are serializable (and 
will not drag half the appcontext along with them in the process), or because 
they know their container does not serialize sessions. In these situations, 
non-serializable objects are acceptable.

It is trivial to modify SpringComponentInjector to support this behaviour. See 
attached patch.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to