У меня есть проект посренный с использование MVC паттерна. Я решил перевести его на spring
. Использую конфигурацию на java
. На данный момент я использовал конфигурационые файлы java
в service и dao
слоях. В wep-app
слое пока что еще использую сервлеты и web.xml
. Проблема в том что я не могу получить бины для дальнейшего использования в серлетах. Вылетает следующая ошибка:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [] is defined
Как я понимаю она свидетльствует о том что я не могу получить свои бины. Помогите найти причину.
web.xml
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.myapp.service.config.ServiceConfig</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
сервлет в котором я хочу получить bean
(от него наследуются все остальные сервлеты)
public class BasicServlet extends HttpServlet {
protected Service<Account> accountService;
@Override
public void init() throws ServletException {
WebApplicationContext applicationContext =
WebApplicationContextUtils.getRequiredWebApplicationContext(
this.getServletContext());
this.accountService = applicationContext.getBean(AccountService.class);
}
}
конфигурационый файл для сервис слоя
@Configuration
@ComponentScan ("com.myapp.dao.config")
@EnableTransactionManagement
public class ServiceConfig {
@Bean
@Qualifier("accountService")
public Service<Account> accountService(MainDao<Account> accountDao, SupportDao<Phone> phonesDao) {
return new AccountService(accountDao, phonesDao);
}
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
ну и сам AccountService
public class AccountService implements Service<Account> {
private MainDao<Account> accountDao;
private SupportDao<Phone> phoneDao;
@Autowired
public AccountService(MainDao<Account> accountDao, SupportDao<Phone> phoneDao) {
this.accountDao = accountDao;
this.phoneDao = phoneDao;
}
public AccountService() {
}
@Override
@Transactional
public void createAccount(Account obj) {
List<Phone> phones = obj.getPhones();
try {
accountDao.create(obj);
for (Phone item : phones) {
phoneDao.create(item);
}
} catch (DaoException e) {
throw new ServiceException(e);
}
}
...остальные методы для работы с DAO слоем
}
Полный стек исключений
javax.servlet.ServletException: Servlet.init() for servlet loginValidation threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
Root Cause
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.myapp.AccountService] is defined
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:372)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:332)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1063)
com.myapp.servlets.BasicServlet.init(BasicServlet.java:25)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь разобраться в функции генерации запросов в приложенииВ запросе в параметре передается MD5-строка
Везде написано что include включает контент ресурса (сервлет, JSP или HTML страница) в ответНо не понятно контент какого(где источник) ресурса? Два...
Всем приветВ общем проблема такая: Проект на JAVA и есть NoSQL DB - MongoDB, необходимо работать примерно с 1000000000 записей