Java 通用服务/dao层的帮助
我想编写通用服务和DAO层 这里是所用实体的UML 一,。抽象道Java 通用服务/dao层的帮助,java,spring,generics,service,dao,Java,Spring,Generics,Service,Dao,我想编写通用服务和DAO层 这里是所用实体的UML 一,。抽象道 当我重写PaymentTypeServiceImpl中的getAll方法(注释行)时,它会起作用。你能给我一个建议吗?我相信你的问题如下: public PaymentTypeServiceImpl() { super.setDao(paymentTypeDAO); } 此时在代码中(在构造函数中),paymentTypeDAO为null,因为还没有调用setter 您可以考虑在您的Spring上下文中使用属性< /代码
当我重写
PaymentTypeServiceImpl
中的getAll
方法(注释行)时,它会起作用。你能给我一个建议吗?我相信你的问题如下:
public PaymentTypeServiceImpl() {
super.setDao(paymentTypeDAO);
}
此时在代码中(在构造函数中),paymentTypeDAO
为null
,因为还没有调用setter
您可以考虑在您的Spring上下文中使用<代码>属性< /代码>,通过<代码> DAO <代码> .< /P> < P>添加@限定符(“PayMyTyPaToAO”),并删除Super .StDAO(PayMyTyPayAO);来自构造函数
@Service
@Transactional
public class PaymentTypeServiceImpl extends AbstractServiceImpl<PaymentType> implements PaymentTypeService {
@Autowired
@Qualifier("paymentTypeDAO")
private PaymentTypeDAO paymentTypeDAO;
public PaymentTypeServiceImpl() {
}
@服务
@交易的
公共类PaymentTypeServiceImpl扩展AbstractServiceImpl实现PaymentTypeService{
@自动连线
@限定符(“paymentTypeDAO”)
私人支付类型dao支付类型dao;
公共支付类型服务impl(){
}
}
请确保上下文文件中存在以下注释配置、组件扫描
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config/>
<context:component-scan base-package="your package name here" />
</beans>
Hmmm,我应该更改什么才能成功初始化paymentTypeDAO?您可以使用paymentTypeDAO
setter调用setDao
并在spring文件中使用paymentTypeDAO
属性。您的意思是为PaymentTypeService类创建bean并设置属性paymentTypeDAO吗?很抱歉提出这些问题,但是我使用的spring文件太少。我添加了
,但仍然没有成功。
@Repository
public class PaymentTypeDAOImpl extends AbstractDAOImpl<PaymentType> implements PaymentTypeDAO {
@Autowired
private SessionFactory sessionFactory;
}
@Transactional
public interface AbstractService<T> {
@Transactional
public List<T> getAll();
}
@Service
@Transactional
public class AbstractServiceImpl<T> implements AbstractService<T> {
@Autowired
private AbstractDAO<T> dao;
@Transactional
public List<T> getAll() {
return dao.getAll();
}
protected AbstractDAO<T> getDao() {
return dao;
}
protected void setDao(AbstractDAO<T> dao) {
this.dao = dao;
}
}
@Transactional
public interface PaymentTypeService extends AbstractService<PaymentType> {
}
@Service
@Transactional
public class PaymentTypeServiceImpl extends AbstractServiceImpl<PaymentType> implements PaymentTypeService {
@Autowired
private PaymentTypeDAO paymentTypeDAO;
public PaymentTypeServiceImpl() {
super.setDao(paymentTypeDAO);
}
// @Override
// public List<PaymentType> getAll() {
// return paymentTypeDAO.getAll();
// }
//
}
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:927)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
java.lang.NullPointerException
com.app.cloud.service.AbstractServiceImpl.getAll(AbstractServiceImpl.java:29)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
com.sun.proxy.$Proxy207.getAll(Unknown Source)
com.app.cloud.controller.orders.OrderController.edit(OrderController.java:150)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:746)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
public PaymentTypeServiceImpl() {
super.setDao(paymentTypeDAO);
}
@Service
@Transactional
public class PaymentTypeServiceImpl extends AbstractServiceImpl<PaymentType> implements PaymentTypeService {
@Autowired
@Qualifier("paymentTypeDAO")
private PaymentTypeDAO paymentTypeDAO;
public PaymentTypeServiceImpl() {
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config/>
<context:component-scan base-package="your package name here" />
</beans>