java - Spring NullPointerException 服务

标签 java spring hibernate struts2 jpa-2.0

我正在尝试使用 Spring 3 Struts 2 和 Hibernate 设置一个小型 Web 应用程序,但我做错了一些事情,我无法弄清楚它是什么,当我尝试调用 struts Controller 中的服务层时,我得到一个 NullPointerException .

实体:

@Entity(name="T_Personne")
public class Personne {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @Column(nullable=false,length=30)
    private String nom;
}

道:

@Repository(value="personneDao")
public class PersonneDaoImpl implements IPersonneDao{


    @PersistenceContext
    private EntityManager em;

    public void setEntityManager(EntityManager entityManager) {
        this.em = entityManager;
    }


    public void save(Personne per) {

        em.persist(per);
    }
}

服务:

@Service(value="personneService")
@Transactional
public class PersonneServiceImpl implements IPersonneService {

    @Autowired
    private IPersonneDao personneDao;

    public void savePersonne(Personne per) {
        personneDao.save(per);

    }

}

Controller :

public class HelloAction extends ActionSupport{

    @Autowired
    private IPersonneService personneService;


    public String execute() throws Exception{

            Personne p = personneService.findPersonneById(1L);
            System.out.println("Nom : "+ p.getNom() + "Prenom : "+ p.getPrenom());

        return SUCCESS;

    } 
}

Spring XML:

<context:annotation-config />

<context:component-scan base-package="net.cadr" />

<tx:annotation-driven transaction-manager="transactionManager"/>

<bean class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" id="entityManagerFactory">
        <property name="persistenceUnitName" value="MyPersistenceUnit"/>
    </bean>

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

Struts XML:

<struts>  

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="personne" extends="struts-default">

        <action name="Hello" class="net.cadr.actions.HelloAction">
            <result name="success">/views/hello.html</result>
        </action>

    </package>

</struts>

问题是实体管理器创建表,struts Controller 也正在工作,我可以映射操作并调用它们!!!

我缺少什么?

谢谢

最佳答案

这是因为你的 Controller 很可能没有 spring bean(Spring 默认不使用 Struts,而是使用自己的框架:Spring-MVC)。

如果您将 Spring 与 Struts 一起使用,那么您应该将此行添加到您的 struts 配置中:

<constant name="struts.objectFactory"
          value="org.apache.struts2.spring.StrutsSpringObjectFactory" />

@参见Struts Spring Plugin

关于java - Spring NullPointerException 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203468/

相关文章:

c# - 如何在 Java、C# 或 PHP 中将音频文件设为 "Trim"(对于浏览器)

java - Spring Cloud Contract 测试实际上应该调用外部服务吗?

java - 如何忽略级别@RequestMapping()而直接调用方法级别@RequestMapping()?

hibernate - 在 HQL 中连接多个表

spring boot - 计算字段

java - 严重 : Context initialization failed org. springframework.beans.factory.BeanCreationException:创建名称为 'sessionFactory' 的 bean 时出错

java - 如何将字符串排序到映射中并打印结果

java.lang.NoClassDefFoundError : org/springframework/boot/autoconfigure/security/SecurityPrerequisite

java - 如何创建透明的 JPanel

java - Spring 启动: how to show actual classpath on startup or at runtime?