spring-懒加载使用场景

来源:互联网 发布:技术编程语言有哪些 编辑:程序博客网 时间:2024/06/08 02:03

场景一:父类应用泛型,当类实例化时通过反射来确定具体类型:
代码:

父类:@SuppressWarnings("unchecked")public class BaseServiceImpl<T> implements BaseService<T> {    protected HibernateTemplate hibernateTemplate;    private Class<T> clazz;    @SuppressWarnings("rawtypes")    public BaseServiceImpl(){    //子类实例化时,调用super();运行父类构造函数。所以this代表具体子类。        ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();        clazz = (Class)type.getActualTypeArguments()[0];    }    public void setHibernateTemplate(HibernateTemplate hibernamteTemplate){        this.hibernateTemplate = hibernamteTemplate;    }    子类:    public class UserServiceImpl extends BaseServiceImpl<User> implements UserService{    public List<User> queryByName(String uname){        List<User> l = hibernateTemplate.find("from User where name like '%"+uname+"%'");        return l;    }}

spring配置:

<bean id="userService" class="com.dx.impl.UserServiceImpl" parent="baseService"></bean>    <bean id="baseService" class="com.dx.impl.BaseServiceImpl" lazy-init="true">        <property name="hibernateTemplate" ref="hibernateTemplate"></property>    </bean>

注意:1.通过添加属性lazy-init=”true”实现懒加载。
2.当bean中有继承关系时,需配置paraent属性,否则调用父类属性和方法是报错。