- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在初始化 @PostConstruct
方法时遇到 NullPointerException
我的启动类代码:
@Component
public class Startup {
@Autowired
private UserService userService;
@Autowired
private BCryptPasswordEncoder passwordEncoder;
@PostConstruct
private void createAdmin() {
try {
User user = userService.findByUsername("admin123");
if (user == null) {
user.setFirstName("administrator");
user.setLastName("administrator");
user.setGender("Male");
user.setDob(Date.valueOf("2019-06-13"));
user.setEmail("administrator@gmail.com");
user.setAddress("administrator address");
user.setUsername("admin123");
user.setPassword(passwordEncoder.encode("admin123"));
user.setPhoneNumber("123456789");
user.setIsActive(Status.getActiveUser());
user.setRole(Role.getRoleAdmin());
userService.saveUser(user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我已将 @Component
更改为 @service
,并将 UserService
更改为 UserRepository
,这次我得到不同的异常:
Could not obtain transaction-synchronized Session for current thread exception.
我哪里弄错了?
这是异常日志:
java.lang.NullPointerException
at com.mhs.goodsexchangehinge.init.Startup.createAdmin(Startup.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4745)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:596)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1805)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
最佳答案
尝试将 (user == null)
更改为 (user != null)
关于java - 初始化@PostConstruct方法时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56574425/
我对下面代码的结果有点困惑。 父 Controller : @Controller public abstract class ParentController{ @PostConstruct pub
我有这样的设置: Bean类: private final Map configCache = new HashMap<>(); @PostConstruct private void fillCac
这似乎不正确。我正在清理代码,只是注意到了这一点。每个ajax请求都会触发我的@PostConstruct bean的构造函数和@ViewScoped。即使是简单的数据库分页也会触发它。 我under
根据answer of BalusC ,我用过 FacesContext.getCurrentInstance().getExternalContext().redirect(url); 在我的 @P
我正在使用 Spring 开发一个 Java 小型应用程序,所以我有这个服务: public class AccountService implements UserDetailsService {
问题:entityManager.unwrap(SessionImplementor.class) 导致没有可用的事务实体管理器异常。 代码: @Component public class Hibe
我想使用 @PostConstruct 在我的 web 应用程序中初始化一个 bean,但我无法让它工作。 我已经在新项目中重新创建了该问题,但仍然无法正常工作。 我在这里遗漏了一些明显的东西吗?据我
我在 Java SE 应用程序中使用 CDI (Weld)。我制作了一个 Bean,我们称之为 BeanA。 public class BeanA { @PostConstruct p
在托管 bean 中,@PostConstruct 在常规 Java 对象构造函数之后调用。 为什么我要使用 @PostConstruct 来初始化 bean,而不是常规构造函数本身? 最佳答案 因为
我有 spring bean 类 RedisRepo在里面我正在使用@PostConstruct初始化我的数据库连接: @PostConstruct public void init() {
我使用了当前版本的 Eclipse 和 Java。我尝试将 RCP 应用程序从 Java 8 迁移到 Java 11。我的应用程序可以运行,但现在遇到功能问题,因为我必须从代码中删除 @PostC
由于我是 Java EE 7 的新手,所以我创建了一个项目以供学习之用。我创建了一个具有 Request 范围的 CDI bean,如下所示(它只是实现了 Serializable,因为我已经尝试将它
我有一个计划任务,每晚汇总数据。每当我启动应用程序时该任务就会运行,并且我想在应用程序上运行 jUnit 测试时停止它运行。 @Scheduled(cron = "0 0 0 1 * ?") publ
这个问题已经有答案了: How to get access to javax.annotation.Resource at run time in Java 9 (2 个回答) Java 9 migr
我正在 JBoss 上试验 EJB3,开发无状态 bean。基本上一旦部署了模块,我就需要执行一些与加载应用程序设置相关的操作。为此,我将一个方法注释为@PostConstruct,据我所知,API
假设我们有以下类 public abstract class AbstractFoo { @PostConstruct private void doIt() { //
我的 JEE 应用程序中有 2 个单例,我想在启动时对其进行初始化。像这样: @Singleton @Startup public class ServiceB { @EJB priv
我正在编写 JAX-RS 库(不是应用程序)。 我有: abstract class A { @PostConstruct private void constructed_a() {
假设我在 Spring @Configuration 中有这个依赖: @Bean public SomeClass someClass(SomeClass1 someClass1, SomeClass
我将 JSF 2.0 与 GlassFish 3.0 结合使用。 我有以下托管 Bean: @ManagedBean @RequestScoped public class OverviewContr
我是一名优秀的程序员,十分优秀!