Ability to override the default bean creation mechanism
-------------------------------------------------------

         Key: IBATIS-50
         URL: http://issues.apache.org/jira/browse/IBATIS-50
     Project: iBatis for Java
        Type: Wish
  Components: SQL Maps  
    Versions: 2.0.9    
    Reporter: Philippe Laflamme


Currently, iBatis is responsible for creating instances of classes used in 
result maps. It relies on the assumption that objects can be obtained using the 
Class.newInstance() method (or something equivalent).

The assumption forces users of the framework to create classes with a no-arg 
default constructor. IMHO, this also has the effect of favoring implementation 
inheritance (extends) over interface inheritance.

Although this is not a problem in most cases, the ability to plug in an 
external instance factory would provide more flexibility and favor good 
programming practices. Amongst other things, it would provide developers the 
ability write code in terms of interface.

A simple solution is to provide an extension point where resultMap class 
instances are obtained from.

The simplest form would be:

public interface InstanceFactory {
  Object createInstance(Class resultMapClass);
}

The default implementation would do something along the lines of:

[...]
return resultMapClass.newInstance();
[...]

Developers could configure iBatis to either use the default implementation or 
their own custom implementation. The setting could be part of the sqlMapConfig 
file or even per resultMap.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira

Reply via email to