factory方法模式

利用java中spring框架IOC模块中的factoryBean来创建工厂对象的一种模式

意义:工厂模式是由抽象工厂(FactoryBean)的实现来创建子工厂来管理资源,实现了节省工厂资源以及引入其他的新技术及资源

代码实现步骤:

1.创建一个工厂类对象

 public class ObjectFactory;

2:factoryBean实现FactoryBean借口返回类型为ObjecFactory

package com.jt.spring.bean;

import org.springframework.beans.factory.FactoryBean;

public class ObjectFactoryBean implements FactoryBean<ObjectFactory> {

@Override
public ObjectFactory getObject() throws Exception {
System.out.println("ObjectFactoryBean.getObject()");
return new ObjectFactory();
}

public Class<?> getObjectType() {
System.out.println("ObjectFactoryBean.getObjectType()");
return ObjectFactory.class;
}

public boolean isSingleton() {
System.out.println("ObjectFactoryBean.isSingleton()");
return false;
}

}

3:测试对象是否创建springCfing.xml为核心配置文件

@Test
public void testObjectFactory(){

ClassPathXmlApplicationContext  context =
new ClassPathXmlApplicationContext("springCfing.xml");


ObjectFactory obj=
context.getBean("objectFactory", ObjectFactory.class);
System.out.println(obj);
context.close();
}

 

 

package com.jt.common.mapper;
import java.util.List;
import org.apache.ibatis.annotations.DeleteProvider;import org.apache.ibatis.annotations.InsertProvider;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.SelectProvider;import org.apache.ibatis.annotations.UpdateProvider;
public interface SysMapper<T> {
    /**     * 根据主键ID批量删除     *      * @param key     * @return     */    @DeleteProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int deleteByIDS(@Param("ids") Object[] key);
    /**     * 根据实体类不为null的字段进行查询,条件全部使用=号and条件     *      * @param record     * @return     */    @SelectProvider(type = SysMapperProvider.class, method = "dynamicSQL")    List<T> select(T record);
    /**     * 根据实体类不为null的字段查询总数,条件全部使用=号and条件     *      * @param record     * @return     */    @SelectProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int selectCount(T record);
    /**     * 根据主键进行查询,必须保证结果唯一 单个字段做主键时,可以直接写主键的值 联合主键时,key可以是实体类,也可以是Map     *      * @param key     * @return     */    @SelectProvider(type = SysMapperProvider.class, method = "dynamicSQL")    T selectByPrimaryKey(Object key);
    /**     * 插入一条数据 支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写) 优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长     *      * @param record     * @return     */    @InsertProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int insert(T record);
    /**     * 插入一条数据,只插入不为null的字段,不会影响有默认值的字段 支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)     * 优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长     *      * @param record     * @return     */    @InsertProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int insertSelective(T record);
    /**     * 根据实体类中字段不为null的条件进行删除,条件全部使用=号and条件     *      * @param key     * @return     */    @DeleteProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int delete(T key);
    /**     * 通过主键进行删除,这里最多只会删除一条数据 单个字段做主键时,可以直接写主键的值 联合主键时,key可以是实体类,也可以是Map     *      * @param key     * @return     */    @DeleteProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int deleteByPrimaryKey(Object key);
    /**     * 根据主键进行更新,这里最多只会更新一条数据 参数为实体类     *      * @param record     * @return     */    @UpdateProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int updateByPrimaryKey(T record);
    /**     * 根据主键进行更新 只会更新不是null的数据     *      * @param record     * @return     */    @UpdateProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int updateByPrimaryKeySelective(T record);
}

 

posted @ 2018-11-02 11:50  如影随心~  阅读(146)  评论(0编辑  收藏  举报