'javax.servlet.ServletContext', который не может быть найден - PullRequest
0 голосов
/ 02 апреля 2019

У меня приложение Springboot выглядит следующим образом:

@SpringBootApplication
@ImportResource("classpath:/config/applicationContext.xml")
public class TaxBatchMain {

    @Autowired
    TaxIdService taxIdService;

    private static final Logger LOGGER = LogManager.getLogger(TaxBatchMain.class);

    public static void main(String[] args) {

        new SpringApplicationBuilder(TaxBatchMain.class).web(false).run(args);
        TaxBatchMain taxBatchMain = new TaxBatchMain();

    }

    public TaxBatchMain() {

        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

    }

    @PostConstruct
    public void checkForTransactions() {

        try {
        ////
            String tab = "someother content";

            String footer  = taxIdService.formatFooter();
            ////
            ////
        }catch(){
        //////////

        }
    }

}

Класс TaxIdServiceImpl выглядит следующим образом:

@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class TaxIdServiceImpl implements TaxIdService {


    @Autowired
    private ServletContext servletContext;

     private String formatFooter(String footer) {
        String[] searchList = {"<ENVIRONMENT_NAME>", "<MS_ENV_NAME>"};
        String[] replacementList = {(String) servletContext.getAttribute(ServletContextKey.EMAIL_HOST_NAME.name()),
          (String) servletContext.getAttribute(ServletContextKey.MS_EMAIL_HOST_NAME.name())};

        return StringUtils.replaceEach(footer, searchList, replacementList);
    }

}

Контекст приложения выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"....................///


<context:annotation-config />

    <context:property-placeholder location="classpath:/config.properties" />

    <util:properties id="configProperties" location="classpath:/config.properties" />

  <!--   <context:property-placeholder location="classpath:data/application.properties"/> -->

    <context:component-scan base-package="com.tax.main" /> 
    <context:component-scan base-package="com.tax.service" />
    <context:component-scan base-package="com.tax.model" />
    <context:component-scan base-package="com.tax.mapper" />
    <context:component-scan base-package="com.tax.util" />

    /////

Когда я бегу в основной класс, я получаю следующие. ошибка

Приложение не удалось запустить


Описание:

Поле servletContext в com.tax.service.TaxIdServiceImpl требовало bean-компонента типа 'javax.servlet.ServletContext', который не может быть найден.

Действие:

Рассмотрите возможность определения bean-компонента типа 'javax.servlet.ServletContext' в вашей конфигурации.

1 Ответ

0 голосов
/ 02 апреля 2019

Попробуйте включить веб-среду.Похоже, ваш SpringApplicationBuilder не включен в веб-среде.

new SpringApplicationBuilder(TaxBatchMain.class).web(true).run(args);

Поскольку вы используете spring-boot, вы можете рассмотреть возможность использования подхода на основе аннотаций, а не на основе XML.

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