我使用spring mvc开发其他Web服务。
我知道应用程序应包含3层:
持久层:使用@Repository注释的类
服务层:使用@Service
注释的类控制器层:使用@Controller注释的类
对于我的情况,数据首先从一个宁静的ws(一个后端)加载然后存储到数据库中,一段时间后,我的项目从其余的ws(后端)重新加载它以刷新数据并使用它来提供一些服务。
那么调用后端ws的java类应该用@Service注释? 然后直接从控制器调用? 在这种情况下如何安排项目架构? 它与使用数据库数据的架构是否相同?
感谢
答案 0 :(得分:1)
根据我的理解,您的数据库是Web服务数据的某种缓存吗?
所以我会实现一些负责从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();
}
}