在许多指南的帮助下,我刚刚使用Spring安全性和休眠方式创建了我的第一个登录页面。

我面临的问题主要是指南没有非常详尽的解释,因此我希望可以通过你们得到一些答案。

问题1:
为什么我们要为UserDao创建接口类?我知道此接口的目的是获得对某种数据库的访问权限。但是由于我的UserDao仅包含:

public interface UserDao {

User findByUserName(String userName);

boolean insertUser(User user);

}


我不能只创建一个类吗?

问题2:

我跑步时在幕后实际上发生了什么:

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService);
}


问题3:

@Service
@Transactional
public class UserDetailsServiceImpl implements UserDetailsService {

@Autowired
private UserDao userDao;

@Override
public UserDetails loadUserByUsername(String userName) throws
UsernameNotFoundException {
code...
}
    }


何时以及如何调用此类?

我阅读了大多数文档,但仍然不明白。

提前致谢!

最佳答案

回答第一季度

没有DAO接口的编程。


假设您是一个庞大系统中的程序员,负责根据新要求添加组件。
从一开始,您的系统就可以与MySQL一起使用。
由于一项新要求,您的项目经理要求您实施对Oracle的支持。 (无论何时需要在MySQL和Oracle之间切换数据库支持)
MySQL查询和Oracle查询是不同的。
您的系统未使用诸如休眠的ORM框架来实现。
特别是,没有DAO接口。所有这些都是与数据库进行通信的具体类。
现在,您将使用包括与Oracle有关的查询在内的方法来实现Java类。
你有麻烦了
您的系统庞大
它包含了复杂的业务逻辑
如果不检查服务层代码或文档,您将无法
知道(您不能更改服务层代码。)
我应该使用哪些名称实现哪些类/方法。
方法的输入参数应该是什么。
应该输出什么。
当然,这将需要几个月的时间,具体取决于系统的复杂性。 (减少时间是软件项目中的关键点)


但是带有DAO接口


您只需要考虑Oracle特定的查询,因为
您只需实现DAO接口
自动dao界面使您步入正轨
使用正确的方法名称
使用正确的输入参数
使用正确的返回变量
如果您超出正常范围,编译将失败。
您可以轻松地通过bean注入来插入oracle或mysql支持

10-06 05:28
查看更多