Spring @Autowired 在某些类中不起作用

Fun*_*ter 5 java spring spring-repositories

所以我使用 Spring 来访问我的数据库并根据不同的属性获取用户。通过 @Restcontroller 我得到了数据。我创建了一个扩展了 CrudRepository 的 UserRepository。

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);
}
Run Code Online (Sandbox Code Playgroud)

我使用 @Autowire 在我的控制器类中获取 UserRepo 的实例

@RestController
public class LoginController {
    @Autowired
    private UserRepository userRepository;
}
Run Code Online (Sandbox Code Playgroud)

这在我拥有的所有控制器中都工作得很好。但现在,当我在另一个类中尝试相同的操作时,userRepository 实例为空。

public class Authentificator {
    @Autowired
    private UserRepository userRepository;
}
Run Code Online (Sandbox Code Playgroud)

Authentificator 和 LoginController 不在同一个包中。但两者并不与 UserRepo 在同一个包中。

  • 项目
    • UserRepo 包
    • 控制器包
    • 验证器包

adr*_*rhc 4

你必须确保Authentificator也是一个 spring bean - 我的意思是你必须用 @Component 或 @Service 之类的东西来注释它。在此步骤之后,您还必须从 spring 获取Authentificator实例,而不是使用new关键字实例化它。

\n