我正在创建一个 Spring 应用程序,其中有一个侧边栏,可用于访问应用程序的模块。
侧栏在应用程序的所有视图中保持可见。我使用 Apache Tiles 创建视图。
由于我不想对 JSP 中的菜单项进行硬编码,因此我想从数据库中填充所需的数据(链接名称、URL 模式)。
我只想这样做一次,所以我的计划是创建一个会话 bean 来将所有这些菜单详细信息放入其中。
我创建了一个名为“MenuDAO”的类,并将其自动连接到控制器。然后我创建一个方法来返回该“MenuDAO”对象,并在我的控制器中将其标记为“ModelAttribute”。
@Autowired
private MenuDAO menuDAO;
@ModelAttribute("userDetails")
public UserDetail getUserDetail(){
return this.userDetails;
}
现在我在徘徊在哪里可以用数据填充这个 DAO。我想每个会话执行一次(例如用户登录时)。
我不能在请求映射的方法中做到这一点,因为一旦它被调用,模型属性就已经被注入,所以只有在下次加载页面时,新数据才可用。
我再次想到在使用@PostConstruct 注释的方法中进行操作。但是我需要在每个控制器中都这样做。
所以我想知道我在哪里可以正确地做到这一点,这样我就可以在每个用户会话中填充一次这个bean。