Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Liferay中使用自定义Spring服务_Spring_Jpa_Service_Liferay - Fatal编程技术网

如何在Liferay中使用自定义Spring服务

如何在Liferay中使用自定义Spring服务,spring,jpa,service,liferay,Spring,Jpa,Service,Liferay,我不想使用Liferay Service builder,我需要使用Spring经典实现服务和JPA(Hibernate)来实现持久性 但是我对豆子注射有一些问题。我认为Liferay与我的spring beans自动连线注射有冲突 是否可以在Liferay 6.1.1中实现我们的定制服务 如果我只声明一个Portlet,那么一切都是工作的。但是,如果我声明第二个portlet,我的spring注入服务将无法工作 控制器端口1: @Controller @RequestMapping( "VIE

我不想使用Liferay Service builder,我需要使用Spring经典实现服务和JPA(Hibernate)来实现持久性

但是我对豆子注射有一些问题。我认为Liferay与我的spring beans自动连线注射有冲突

是否可以在Liferay 6.1.1中实现我们的定制服务

如果我只声明一个Portlet,那么一切都是工作的。但是,如果我声明第二个portlet,我的spring注入服务将无法工作

控制器端口1:

@Controller
@RequestMapping( "VIEW" )
public class Portlet1Controller
{
    @Autowired
    private ClientService clientService;

    public void setClientService( ClientService clientService )
    {
        this.clientService = clientService;
    }

    @RequestMapping
    public String doView( final Model model, final RenderRequest request, final RenderResponse response, final PortletSession session ) throws Exception
    {
        clientService.saveClient(new ClientEntity("henry");
        return "view1";

    }
ServiceImpl.java

    @Service
    public class ClientServiceImpl implements ClientService
    {
        @Autowired
        private ClientDao clientDao;

        @Override
        @Transactional
        public void saveClient( ClientEntity client ) throws DataAccessException
        {
            clientDao.save(client);
        }
}
DaoImpl.java

@Repository
public class ClientDaoImpl implements ClientDao {

@PersistenceContext
private EntityManager em;

@Override
public void save(ClientEntity client) {
    if (client.getId() == null) {
        this.em.persist(client);            
    }
    else {
        this.em.merge(client);    
    }
}
它在java经典web应用程序中工作,但在Liferay中不工作

我知道我可以在properties
spring.configs=
中声明,但我不理解这个属性

错误日志:

121:33:29,345 ERROR [DispatcherPortlet:276] Context initialization failed
 2org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private fr.kitech.cash.dao.ClientDao fr.kitech.cash.service.impl.ClientServiceImpl.clientDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientDaoImpl': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined
 3    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
 4    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1116)
 5    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
 6    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
 7    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
 8    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
 9    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
10    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
11    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
12    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
13    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
14    at org.springframework.web.portlet.FrameworkPortlet.createPortletApplicationContext(FrameworkPortlet.java:357)
15    at org.springframework.web.portlet.FrameworkPortlet.initPortletApplicationContext(FrameworkPortlet.java:294)
16    at org.springframework.web.portlet.FrameworkPortlet.initPortletBean(FrameworkPortlet.java:268)
17    at org.springframework.web.portlet.GenericPortletBean.init(GenericPortletBean.java:124)
18    at javax.portlet.GenericPortlet.init(GenericPortlet.java:107)
19    at com.liferay.portlet.InvokerPortletImpl.init(InvokerPortletImpl.java:256)
20    at com.liferay.portlet.PortletInstanceFactoryImpl.init(PortletInstanceFactoryImpl.java:221)
21    at com.liferay.portlet.PortletInstanceFactoryImpl.create(PortletInstanceFactoryImpl.java:140)
22    at com.liferay.portlet.PortletInstanceFactoryUtil.create(PortletInstanceFactoryUtil.java:41)
23    at com.liferay.portlet.PortletBagFactory.create(PortletBagFactory.java:310)
24    at com.liferay.portal.deploy.hot.PortletHotDeployListener.initPortlet(PortletHotDeployListener.java:546)
25    at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:321)
26    at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:120)
27    at com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:188)
28    at com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:96)
29    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)
30    at com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:151)
31    at com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:141)
32    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:42)
33    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:64)
34    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:56)
35    at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:52)
36    at com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:103)
37    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
38    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
39    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
40    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
41    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
42    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
43    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1099)
44    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1621)
45    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
46    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
47    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
48    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
49    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
50    at java.lang.Thread.run(Thread.java:662)
51Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private fr.kitech.cash.dao.ClientDao fr.kitech.cash.service.impl.ClientServiceImpl.clientDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientDaoImpl': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined
52    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
53    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
54    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
55    ... 47 more

spring injection服务不起作用
,什么是
不起作用
的意思-您有没有收到任何错误、异常等?我添加了日志异常。看看这是否有帮助。非常感谢!它现在可以工作了,我用JBoss7.1.1切换tomcat