我使用spring mvc开发rest Web服务。
我知道应用程序应该包含3层:
持久层:用@Repository注解的类
服务层:用@Service注解的类
控制器层:使用@Controller注解的类
对于我的例子,数据首先从restful ws (后端)加载,然后存储到数据库中,一段时间后,我的项目从rest ws (后端)重新加载数据,以刷新数据并使用它来提供一些服务。
那么调用后端ws的java类应该用@Service注解吗?然后直接从控制器调用?在这种情况下,如何安排项目架构?它与那些使用数据库数据的架构是相同的吗?
谢谢
发布于 2017-06-08 23:40:02
据我所知,您的数据库是某种the服务数据的缓存,对吧?
因此,我将实现一些负责从WS检索数据的@Service bean,让我们称其为"WSAccessBean“。
现在我想到了两种方法:
服务延迟加载:您实现了另一个@
注释后编辑:
因此,如果您的数据需要按需加载,下面的代码片段将以"Book“POJO为例显示基本架构:
@Service
public class BookWebservice {
// Load books from remote webservice
List<Book> retrieveBooks();
}
@Repository
public class BookDAO {
List<Book> getBooks();
void storeBooks(List<Book> books);
boolean uptodate();
}
@Service
public class BookService {
@Autowired
BookDAO bookDAO;
@Autowired
BookWebservice bookWebservice;
// Checks if local data is up-to-date. If not load via Webservice and store in the local DB, then return content from DB
List<Book> getBooks() {
if (!bookDAO.uptodate()) {
bookDAO.storeBooks(bookWebservice.retrieveBooks());
}
return bookDAO.getBooks();
}
}
@Controller
public class BookController {
@Autowired
BookService bookService;
@GetMapping("/books")
public List<Book> books() {
return bookService.getBooks();
}
}https://stackoverflow.com/questions/44437457
复制相似问题