如何配置服务和存储库 类 spring 引导
how to configure service and repository classes spring boot
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
存储库:
@Repository
public interface FileRepository { }
public class FileRepositoryImpl implements FileRepository {}
服务与实施:
@Service
public interface FileService { }
public class FileService implements FileService {
@Autowired
FileReposiory repo;
}
任务:
@Component
public class DummyTask {
@Autowired
private FileService fileService;
public void run(String schedule) {
fileService.runtask(schedule);
}
}
我正在尝试 运行 使用上述注释的简单应用程序。此应用程序没有 REST 端点或使用控制器。我的fileService
在执行DummyTask
时有null
引用。
另外,当我运行使用 Junit 测试来测试 FileRepository
时,我也得到 fileRepository
为空。有人可以指出它是如何不满意的以及如何纠正吗?
public class FileRepositoryTest {
@Autowired
private FileRepository fileRepository;
@Test
public void testGetCustomerDir() {
//blah
}
}
我执行我的任务如下:
threadPoolTaskScheduler.schedule(new Job(reportSchedule), new CronTrigger(reportSchedule.getCronExpression()));
class Job implements Runnable {
private String schedule;
public Job (String schedule) {
this.schedule = schedule;
}
@Override
public void run() {
reportExportSchedulerTask.run(schedule);
}
}
DummyTask 本身需要是一个 Spring bean,以便 Spring 为您自动装配 bean。您可以通过将其标记为 @Component:
来解决此问题
@Component
public class DummyTask implements Runnable {
@Autowired
private FileService fileService;
@Override
public void run() {
fileService.runtask(blah);
}
}
至于测试,您应该将其标记为@SpringBootTest。这将使 bean 可用于自动装配的测试。
@RunWith(SpringRunner.class)
@SpringBootTest
public class FileRepositoryTest {
@Autowired
private FileRepository fileRepository;
@Test
public void testGetCustomerDir() {
//blah
}
}
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
存储库:
@Repository
public interface FileRepository { }
public class FileRepositoryImpl implements FileRepository {}
服务与实施:
@Service
public interface FileService { }
public class FileService implements FileService {
@Autowired
FileReposiory repo;
}
任务:
@Component
public class DummyTask {
@Autowired
private FileService fileService;
public void run(String schedule) {
fileService.runtask(schedule);
}
}
我正在尝试 运行 使用上述注释的简单应用程序。此应用程序没有 REST 端点或使用控制器。我的fileService
在执行DummyTask
时有null
引用。
另外,当我运行使用 Junit 测试来测试 FileRepository
时,我也得到 fileRepository
为空。有人可以指出它是如何不满意的以及如何纠正吗?
public class FileRepositoryTest {
@Autowired
private FileRepository fileRepository;
@Test
public void testGetCustomerDir() {
//blah
}
}
我执行我的任务如下:
threadPoolTaskScheduler.schedule(new Job(reportSchedule), new CronTrigger(reportSchedule.getCronExpression()));
class Job implements Runnable {
private String schedule;
public Job (String schedule) {
this.schedule = schedule;
}
@Override
public void run() {
reportExportSchedulerTask.run(schedule);
}
}
DummyTask 本身需要是一个 Spring bean,以便 Spring 为您自动装配 bean。您可以通过将其标记为 @Component:
来解决此问题@Component
public class DummyTask implements Runnable {
@Autowired
private FileService fileService;
@Override
public void run() {
fileService.runtask(blah);
}
}
至于测试,您应该将其标记为@SpringBootTest。这将使 bean 可用于自动装配的测试。
@RunWith(SpringRunner.class)
@SpringBootTest
public class FileRepositoryTest {
@Autowired
private FileRepository fileRepository;
@Test
public void testGetCustomerDir() {
//blah
}
}