我创建了一个调度程序类
public class TestSchedulderNew {
@Scheduled(fixedDelay = 3000)
public void fixedRateJob1() {
System.out.println("Job 1 running");
}
@Scheduled(fixedDelay = 3000)
public void fixedRateJob2() {
System.out.println("Job 2 running");
}
}
Run Code Online (Sandbox Code Playgroud)
在配置中,我放置了 @ConditionalOnProperty 注释以在有条件的情况下启用此功能。
@Bean
@ConditionalOnProperty(value = "jobs.enabled")
public TestSchedulderNew testSchedulderNew() {
return new TestSchedulderNew();
}
Run Code Online (Sandbox Code Playgroud)
现在在控制器中,我创建了“stopScheduler”方法来停止那些调度程序,在这个控制器中我有自动装配的 TestSchedulderNew 类
@RestController
@RequestMapping("/api")
public class TestCont {
private static final String SCHEDULED_TASKS = "testSchedulderNew";
@Autowired
private ScheduledAnnotationBeanPostProcessor postProcessor; /]
@Autowired
private TestSchedulderNew testSchedulderNew;
@GetMapping(value = "/stopScheduler")
public String stopSchedule(){
postProcessor.postProcessBeforeDestruction(testSchedulderNew,
SCHEDULED_TASKS);
return "OK";
}
} …Run Code Online (Sandbox Code Playgroud) 假设我有以下设置,一个接口有一个方法“ addTaxTrans()”
public interface TaxTransInterface {
Response<Map<String, Object>> addTaxTrans(Long sessionId, TaxMap taxMap);
}
Run Code Online (Sandbox Code Playgroud)
我用此接口实现了两个类。
客户1的首次抵押
@component
public class Client1TaxImpl implements TaxTransInterface{
@Override
public Response<Map<String, Object>> addTaxTrans(Long sessionId,
TaxMap taxMap) {
// Common code + client 1 customization code
}
}
Run Code Online (Sandbox Code Playgroud)
客户端2的第二种实现
@component
public class Client2TaxImpl implements TaxTransInterface{
@Override
public Response<Map<String, Object>> addTaxTrans(Long sessionId,
TaxMap taxMap) {
// Common code + Client 2 customization code
}
}
Run Code Online (Sandbox Code Playgroud)
下面是服务的实现,因此这里我自动连接TaxTransInterface并调用addTaxtrans方法。
@Service.
public class TaxSerImpl implements TaxSer {
@Autowired
private TaxTransInterface taxTransInterface;
@Override
@Transactional(rollbackFor …Run Code Online (Sandbox Code Playgroud)