所以我正在使用Spring访问我的数据库并基于不同的属性获取用户。使用@Restcontroller可以获取数据。我创建了一个UserRepository来扩展CrudRepository。
videos
我使用@Autowire在控制器类中获取UserRepo的实例
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User, Integer> {
Iterable<User> findByNachname(String nachname);
Iterable<User> findByRolle(Rolle rolle);
Optional<User> findByBenutzername(String benutzername);
@Transactional
String deleteByBenutzername(String benutzername);
}
这在我拥有的所有控制器中都可以正常工作。 但是现在,当我在另一个类中尝试相同的操作时,userRepository实例为null。
@RestController
public class LoginController {
@Autowired
private UserRepository userRepository;
}
Authentificator和LoginController不在同一程序包中。但是,它们和UserRepo不在同一个软件包中。
答案 0 :(得分:2)
@Autowired
仅适用于spring上下文。这意味着它仅适用于由Spring管理的类实例。您的Authentificator
类由您管理,Spring不必照顾或了解它,这对于Java Framework而言并不重要。
这更多是配置问题,而不是注释问题。
答案 1 :(得分:1)
您必须确保 Authentificator 也是一个spring bean-我的意思是您必须使用@Component或@Service这样的注释。完成此步骤后,您还必须从spring中“获取” Authentificator 实例,而不是使用 new 关键字实例化它。
答案 2 :(得分:0)
如果您希望Spring在Authenticator
对象中注入一个字段,则依赖对象也必须由Spring创建。您可以通过将此类标记为@Component
或通过使用带有Authenticator
批注的@Bean
返回类型创建方法来实现。然后必须将其注入某个地方。