Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 空存储库,即使已实现@Autowired_Java_Spring_Spring Boot_Spring Mvc_Spring Data - Fatal编程技术网

Java 空存储库,即使已实现@Autowired

Java 空存储库,即使已实现@Autowired,java,spring,spring-boot,spring-mvc,spring-data,Java,Spring,Spring Boot,Spring Mvc,Spring Data,我有以下控制器 下面这一行很好: user=userRepository。选择userbylogin(名称) 它正确地返回用户 @Controller public class TestController { @Autowired private UserRepository userRepository; @RequestMapping(method = RequestMethod.GET, value = "/testpage") p

我有以下控制器

下面这一行很好:

user=userRepository。选择userbylogin(名称)

它正确地返回用户

@Controller
public class TestController {

    @Autowired
    private UserRepository userRepository;

    @RequestMapping(method = RequestMethod.GET, value = "/testpage")
    public String initTest() {

        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        String name = user.getUsername();
        
        User user = new User();
        user = userRepository.selectUserByLogin(name);

        return "";
    }
}
现在我想把代码移到“Utilities”类的getLoggedUser方法中。 我就是这样做的

控制器

@Controller
public class TestController {

    @RequestMapping(method = RequestMethod.GET, value = "/testpage")
    public String initTest() {
        
        Utilities utilities = new Utilities();

        User user = new User();
        user = utilities.getLoggedUser();

        return "";
    }
}
公用事业

public class Utilities {
    
    @Autowired
    private UserRepository userRepository;  
    
    public User getLoggedUser() {
        
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        String name = user.getUsername();
        
        User user = new User();
        user = userRepository.selectUserByLogin(name);
        
        return user;
    }
}
但当执行时,我得到以下错误:

无法调用“UserRepository.selectUserByLogin(String)”,因为“this.UserRepository”为空

如果使用@Autowired表示法,为什么为空?
看起来与原来的有效实现中的相同。

如果您使用以下新选项创建
实用程序
类的实例,则Spring将无法自动连接存储库:
Utilities=newutilities()

为此,您必须将
@组件
@服务
注释添加到
实用程序
类中:

@组件
公用事业{
然后将其自动连接到控制器中:

@控制器
公共类测试控制器{
@自动连线
私人公用事业;
@RequestMapping(method=RequestMethod.GET,value=“/testpage”)
公共字符串initTest(){
用户=新用户();
user=utilities.getLoggedUser();
返回“”;
}
}

如果您使用新的类创建
实用程序的实例,Spring将无法自动连接存储库,例如:
Utilities=newutilities();

为此,您必须将
@组件
@服务
注释添加到
实用程序
类中:

@组件
公用事业{
然后将其自动连接到控制器中:

@控制器
公共类测试控制器{
@自动连线
私人公用事业;
@RequestMapping(method=RequestMethod.GET,value=“/testpage”)
公共字符串initTest(){
用户=新用户();
user=utilities.getLoggedUser();
返回“”;
}
}