@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Transactional
public User findByName(String userName) {
User user = null;
user=  userDao.getUserByName(userName);
return user;
}
}
这样一个service在ShiroDbRealm 使用时,始终无法初始化,但我这个service在普通的@Controller中都是可以使用的,用法也是这样。
public class ShiroDbRealm extends AuthorizingRealm {
@Autowired
private UserService userService;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
String userName = (String) principals.fromRealm(getName()).iterator().next();
User user= userService.findByName(userName);
if (user != null) {
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.addStringPermission("");
return info;
}
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken upToken = (UsernamePasswordToken) token;
User user = userService.findByName(upToken.getUsername());
if (user != null) {
return new SimpleAuthenticationInfo(user, user.getPassword(), getName());
}
return null;
}
}