Spring中动态执行方法

定义任务接口

/*** 任务接口** @author xiehui1956@gmail.com on* @version 1.0.0* @date 2021/8/28*/
public interface IDynamicTaskNode {/*** 执行方法的入口*/void task();}

定义任务实现

/*** TODO** @author xiehui1956@gmail.com on* @version 1.0.0* @date 2021/8/29*/
@Service
public class DynamicTaskStudentSayHiImpl implements IDynamicTaskNode {private IUserService iUserService;public DynamicTaskStudentSayHiImpl(IUserService iUserService) {this.iUserService = iUserService;}@Overridepublic void task() {iUserService.sayHi();}
}

定义业务接口

/*** 业务接口** @author xiehui1956@gmail.com on* @version 1.0.0* @date 2021/8/29*/
public interface IUserService {void sayHi();
}

定义业务实现

/*** TODO** @author xiehui1956@gmail.com on* @version 1.0.0* @date 2021/8/29*/
@Service
public class UserServiceImpl implements IUserService, IDynamicTaskNode {@Overridepublic void sayHi() {System.out.println("Hi, I am student!");}@Overridepublic void task() {sayHi();}
}

定义BeanUtils

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/*** TODO** @author xiehui1956@gmail.com on* @version 1.0.0* @date 2021/8/29*/
@Component
public class BeanUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;public static  T getBean(Class bean) {return applicationContext.getBean(bean);}public static  T getBean(String var1, Class var2) {return applicationContext.getBean(var1, var2);}public static ApplicationContext getApplicationContext() {return applicationContext;}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {BeanUtils.applicationContext = applicationContext;}
}

执行入口

/*** Created by xiehui1956(@)gmail.com on 2020/3/13*/
@SpringBootApplication
public class SsoServiceApplication {@Beanpublic WebServerFactoryCustomizer cookieProcessorCustomizer() {return (factory) -> factory.addContextCustomizers((context) -> context.setCookieProcessor(new LegacyCookieProcessor()));}public static void main(String[] args) throws Exception {SpringApplication.run(SsoServiceApplication.class, args);String interfacePath = "com.sso.mysso.ssoservice.dyn.IDynamicTaskNode", serviceName = "dynamicTaskStudentSayHiImpl";dynamicMethod(interfacePath, serviceName);}public static void dynamicMethod(String interfacePath, String serviceName) throws Exception {Class aClass = Class.forName(interfacePath);Object taskNode = BeanUtils.getBean(serviceName, aClass);taskNode.getClass().getDeclaredMethod("task").invoke(taskNode);}
}
                        


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部