Весенний общий ресурс приложения через общий интерфейс в другое приложение - PullRequest
0 голосов
/ 22 октября 2018

Эти проекты выполняются на сервере Tomcat.

Структура проекта: (содержит следующие 3 проекта)

  • shared - (содержитобщие интерфейсы) - Это не приложение Spring
  • toolkit - Основной проект (зависимость от общего проекта) - Spring boot
  • service - subproject (используйте project shared для получения dao из инструментария) - Spring boot

shared

    public interface ConfigParamDAOnew {

    public static final String CLASS_NAME = "paramDAO";

    String getParamValueByName(String name);

}

toolkit

@Component
public class ParamModel_Global_DAO_Impl implements ConfigParamDAOnew {

    @Autowired
    ParamModel_GlobalJPARepository jpa;

    @Autowired
    ServletContext context;

    @Override
    public String getParamValueByName(String name) {
        return jpa.findByName(name).get().getValue();
    }

    @PostConstruct
    public void setup() {
        context.setAttribute(ConfigParamDAOnew.CLASS_NAME, this);
    }

}

service

@Service
public class NewConfigParamDAO {

    @Autowired
    ServletContext servletContext;

    ConfigParamDAOnew dao;  

    public NewConfigParam getParam(String name) {
        loadConfigParamDAO();
        return new NewConfigParam(name, dao.getParamValueByName(name));            
    }

    private void loadConfigParamDAO() {
        dao = (ConfigParamDAOnew) 
        servletContext.getAttribute(ConfigParamDAOnew.CLASS_NAME);
    }
> Caused by: java.lang.NullPointerException   at
> de.usu.si.toolkit.config.NewConfigParamDAO.getParam(NewConfigParamDAO.java:35)
>     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:365)
>     at
> org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:308)
>     at
> org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:135)
>     ... 27 more

Начальная загрузка завершается неудачно, после того, как ее запросили dao из проекта toolkit.Это работает мне раньше, где может быть ошибка?

1 Ответ

0 голосов
/ 22 октября 2018

Эта проблема возникла из-за того, что bean-компонент NewConfigParamDAO был создан до bean-компонента ParamModel_Global_DAO_Impl, после чего этот bean-компонент не может быть найден в ServletContext.

Я исправляю это с помощью аннотации @DependsOn ("paramModel_Global_DAO_Conid_DAO_Impl") InImpl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...