在service注解下的构造函数入参会爆红,通常是因为Spring框架无法自动注入这些参数。解决这个问题的方法是使用@Autowired或@Resource注解来手动注入这些参数。这些注解可以将其他类中的对象注入到当前类中的构造方法中,从而解决构造函数入参的问题。
下面是一个示例:
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
private final RoleRepository roleRepository;
@Autowired
public UserServiceImpl(UserRepository userRepository, RoleRepository roleRepository) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
}
// UserServiceImpl的其他方法
}
在这个示例中,UserServiceImpl类有一个构造方法,它有两个参数:userRepository和roleRepository。使用@Autowired注解,Spring框架可以自动将这些参数注入到构造方法中,从而解决了构造函数入参的问题。
如果你使用的是@Resource注解,那么代码会略有不同。下面是一个使用@Resource注解的示例:
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
private final RoleRepository roleRepository;
@Resource
public UserServiceImpl(UserRepository userRepository, RoleRepository roleRepository) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
}
// UserServiceImpl的其他方法
}
在这个示例中,使用@Resource注解来注入userRepository和roleRepository对象。这两个对象必须在Spring容器中注册过,否则会抛出异常。
无论你使用哪种注解,都需要确保注入的对象已经在Spring容器中注册过。否则,会抛出异常或运行时错误。