执行main方法时调用server层或dao层方法

发布时间 2023-08-26 13:52:57作者: 豁达舍得

因业务需要临时同步一个数据,一开始想着直接写个main方法执行一下同步方法就Ok了,结果在查询的时候直接报空指针错误,一下子就给我干懵逼了,没办法只好先写一个接口调这个方法,然后重新启动项目,然后外部访问执行一下,终于是同步过来了。(同步方法是一直都有的)

以上都是个人牢骚,下面是具体方法

项目框架:springboot

1、新建SpringUtil方法

public class SpringUtils implements ApplicationContextAware {
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        SpringUtils.applicationContext = applicationContext;
    }

    public static Object getBean(String name) {
        return applicationContext.getBean(name);
    }

    public static <T> T getBean(Class<T> clazz) {
        return applicationContext.getBean(clazz);
    }

    public static <T> T getBean(String name,Class<T> clazz){
        return applicationContext.getBean(name, clazz);
    }
}

 主要是用于获取对应的类

2、写main方法

@SpringBootApplication
public class test01 {
    public static void main(String[] args) {
        SpringApplication.run(test01.class, args);
        // 调用service层
//        UserService userService = SpringUtils.getBean(UserService.class);
//        List<User> users= userService.selectUserByCate("01");
//        for (User user:users) {
//            System.out.println(user.getUserId()+"=="+user.getUserNo()+"=="+user.getUserTitle());
//        }

        // 调用dao层
        UserMapper userMapper = SpringUtils.getBean(UserMapper.class);
        List<User> users = userMapper.selectUserByCategory("01","Y");
        for (User user:users) {
            System.out.println(user.getUserId()+"=="+user.getUserNo()+"=="+user.getUserTitle());
        }

        // 停止方法
        System.exit(0);
    }
}

我当前是直接新建一个Java执行,但是在任意地方写main方法也都可以,亲测Ok

Tips:执行这个方法必须要在对应Java里面引用  @SpringBootApplication  ,不然会报错。

这个相当于是直接启动了整个项目然后执行,我最后加上 System.exit(0); 就是为了让线程直接关掉

Tips2:新建Java文件执行的话在idea上不能正常删除,必须要把safe delete选项关掉才行

 不关会一直报错,没细追原因