定义了一个MyMetaObjectHandler类,加了component注解,不明白这个类是如何被调用的

定义了一个MyMetaObjectHandler类,加了component注解,不明白这个类是如何被调用的

问题描述:

0、项目结构:
图片说明

1、写了个测试类,测试类里面调用userMapper(继承basemapper类)进行插入数据

    @Test
    public void testInsert() throws Exception{

        User user = new User();
        user.setAge(43);
        user.setEmail("72@qq.com");
        user.setName("ni");
//            userMapper.selectList(null);
        int res = userMapper.insert(user);
        System.out.println(res);
        System.out.println(user);

    }

userMapper:

@Repository
public interface UserMapper extends BaseMapper<User> {
}

2、MyMetaObjectHandler实现了MetaObjectHandler接口

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject){

        this.setFieldValByName("createTime",new Date(), metaObject);
        this.setFieldValByName("updateTime",new Date(), metaObject);

        System.out.println("我被执行了");
    }
    @Override
    public void updateFill(MetaObject metaObject) {


        this.setFieldValByName("updateTime",new Date(), metaObject);
    }
}

3、输出结果
图片说明

4、这是在什么时候执行了MyMetaObjectHandler类,如果我只是在测试类里面查询数据,不进行插入操作,就不会输出“我被执行了”

spring自动扫描加载的

底层是通过反射生成,并不是使用spring容器中的