Spring boot java.lang.NullPointerException:尝试在控制器中注入spring容器时为null

Spring boot java.lang.NullPointerException:尝试在控制器中注入spring容器时为null,spring-boot,Spring Boot,大家好,我有一个noob问题。我试图建立一个简单的登录页面。 我的控制器上确实有@resource这个jparepository,但日志上说是nullpointexception。 我用getbean()尝试了main start来访问sql中的用户,这是可以做到的。但为什么呢 我在控制器里够不着它。对不起,这是我第一次问,所以请原谅我的格式表 @Controller public class indexController { @Resource private jp

大家好,我有一个noob问题。我试图建立一个简单的登录页面。 我的控制器上确实有@resource这个jparepository,但日志上说是nullpointexception。 我用getbean()尝试了main start来访问sql中的用户,这是可以做到的。但为什么呢 我在控制器里够不着它。对不起,这是我第一次问,所以请原谅我的格式表

@Controller
public class indexController {
    
    @Resource
    private jpaRepository2 jpa2;
    
    @GetMapping("/index")
    public  String index()
    {
        return "index";
    }

    @RequestMapping("/login")
    public  String login(@RequestParam("username") String username,@RequestParam("password") String password)
    {
        user user2 = jpa2.findByName(username);
        if(password == user2.getPassword())
        {
            return "index";
        }else
        {
            return "logged";
        }
    }

**@Repository
public interface jpaRepository2 extends JpaRepository<user,Integer>{

    @Query(value="select * from user where username = ?",nativeQuery=true)
     user  findByName( String name);
    
}**

entity
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user")
public class user {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private Integer id;
    @Column(name="username")
    private String username;
    @Column(name="password")
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "user [username=" + username + ", password=" + password + "]";
    }
    
}

the following is log:......

java.lang.NullPointerException: null
at com.mickey.controller.indexController.login(indexController.java:37) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_281]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_281]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_281]
@控制器
公共类索引控制器{
@资源
私人JPA储蓄2 jpa2;
@GetMapping(“/index”)
公共字符串索引()
{
返回“索引”;
}
@请求映射(“/login”)
公共字符串登录(@RequestParam(“用户名”)字符串用户名,@RequestParam(“密码”)字符串密码)
{
用户user2=jpa2.findByName(用户名);
if(password==user2.getPassword())
{
返回“索引”;
}否则
{
返回“已记录”;
}
}
**@存储库
公共接口jpaRepository2扩展了JpaRepository{
@查询(value=“select*from user where username=?”,nativeQuery=true)
用户findByName(字符串名称);
}**
实体
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.Table;
@实体
@表(name=“user”)
公共类用户{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私有整数id;
@列(name=“username”)
私有字符串用户名;
@列(name=“password”)
私有字符串密码;
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
@凌驾
公共字符串toString(){
返回“user[username=“+username+”,password=“+password+”]”;
}
}
以下是日志:。。。。。。
java.lang.NullPointerException:null
登录(indexController.java:37)~[classes/:na]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[na:1.8.0_281]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[na:1.8.0281]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[na:1.8.0281]

嗨,凯尔,请更改@ControllerAnotion@RestController使用
@Autowired
注释
jpaRepository2
替换
@Resource
注释

@Resource
injectbean默认按字段名匹配,而不是按类型匹配,或者使用
@Resource(name=“jpaRepository2”)

--修理--

问题似乎不是由上述原因引起的。我怀疑您的
indexController
不是由Spring IoC容器管理的,请确保您的
indexController
实例不是由
new indexController();