gpt4 book ai didi

java - Autowiring 对象未实例化

转载 作者:行者123 更新时间:2023-11-30 01:48:02 26 4
gpt4 key购买 nike

我正在尝试做一个简单的应用程序,使用 Spring 和 Hibernate 来保存用户。问题是 Controller 对象实例为空(我正在使用@Autowired)。

我尝试创建一个 SpringUtils 文件,设置一个范围,设置@ComponentScan,但没有任何效果。

Spring 主要应用

@SpringBootApplication
@EnableJpaRepositories
@ComponentScan({"com.springprojectdao","com.springprojectc.controller"})
@EntityScan("com.springprojectentity")
public class SpringProjectApplication {
@Autowired
static UserController userController; //it's null

public static void main(String[] args) {
SpringApplication.run(SpringProjectApplication.class, args);
userController.createUser();
}
}

Controller

@Controller
public class UserController {
@Autowired
private UserDAO userDAO;
//private UserVO user;

public UserVO initUser() {
UserVO user = new UserVO();
user.setUsername("Charly");
user.setPassword("alamo8");
user.setPhone("654789321");
return user;
}

//@Bean
public UserVO createUser() {
UserVO user = initUser();
userDAO.save(user);
return null;
}
}

DAO

@Repository
public interface UserDAO extends JpaRepository<UserVO,String> {

}


@Service
public class UserDAOImpl implements UserDAO {

@Override
public <S extends UserVO> S save(S entity) {
// TODO Auto-generated method stub
save(entity);
return null;

}
}

SpringUtils

@Component
public class SpringUtils {


public static ApplicationContext ctx;

/**
* Make Spring inject the application context
* and save it on a static variable,
* so that it can be accessed from any point in the application.
*/
@Autowired
private void setApplicationContext(ApplicationContext
applicationContext) {
ctx = applicationContext;
}

}

这是我得到的错误:

Exception in thread "main" java.lang.NullPointerException at com.springproject.SpringProjectApplication.main(SpringProjectApplication.java)

最佳答案

在Springframework中,我们无法将其设为带有静态变量的Spring bean。因为类加载器加载静态变量时Spring上下文还没有被加载。因此类加载器无法正确地将静态类注入(inject)到 bean 中并失败。

    @Autowired
static UserController userController;

关于java - Autowiring 对象未实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com