【发布时间】:2017-08-01 23:22:33
【问题描述】:
我尝试遵循有关 Spring MVC 的教程。教程中有UserDao接口(使用Spring Data JPA)
public interface UserDao extends JpaRepository<User, Long> {
User findByUsername(String username);
}
还有UserService和UserServiceImpl
public interface UserService {
void save(User user);
User findByUsername(String username);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Autowired
private RoleDao roleDao;
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
public void save(User user) {
user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
Set<Role> roles = new HashSet<>();
roles.add(roleDao.getOne(1L));
user.setRoles(roles);
userDao.save(user);
}
@Override
public User findByUsername(String username) {
return userDao.findByUsername(username);
}
}
- 为什么save方法在Service层而不在dao层?我读到所有的 CRUD 操作都应该放在 dao 层。
- 在 UserServiceImpl 中 findByUsername(String username) 的目的是什么?我们可以使用dao中的方法,因为我们使用的是Spring Data,所以Spring已经实现了这个功能。
【问题讨论】:
标签: java spring spring-mvc spring-data-jpa service-layer