java - 自动装配的对象未实例化
问题描述
我正在尝试做一个简单的应用程序来保存使用 Spring 和 Hibernate 的用户。问题是控制器对象实例为空(我正在使用@Autowired)。
我试图创建一个 SpringUtils 文件,设置一个范围,设置@ComponentScan,但没有任何效果。
弹簧主要应用
@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
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;
}
}
道
@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;
}
}
这是我得到的错误:
com.springproject.SpringProjectApplication.main(SpringProjectApplication.java) 处的线程“主”java.lang.NullPointerException 中的异常
解决方案
在 Springframework 中,我们不能让它成为一个带有静态变量的 Spring bean。因为在类加载器加载静态变量的时候还没有加载Spring上下文。所以类加载器没有正确地将静态类注入到 bean 中并失败。
@Autowired
static UserController userController;
推荐阅读
- laravel - 如何更新 Laravel composer.json
- javascript - 如何在 TypeScript 应用程序中为 Jest 添加类型检查器?
- python - 更新 Tensorboard,同时使用 conda 保持旧的 Tensorflow
- npm - Visual Studio Code - 使用 NPM SCRIPTS 时未找到 NPM
- python - 使用 Python 3 setuptools 时,单个模块在 PyPi 上变成一个包
- android - 回购同步:![拒绝] android-q-preview-4 -> android-q-preview-4(会破坏现有标签)
- c# - UWP 用户控件 ConverterParameter 绑定为空
- c# - 将所有未知和未来的文件夹移动到特定文件夹
- python - 为什么使用 .apply() 编辑数据框是个坏主意?
- reactjs - 我如何多次从 api 请求