spring boot tomcat war部署失败org.springframework.beans.factory.unsatifieddependencyException

cuxqih21  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(284)

我在将spring boot 2.3.2 war应用程序版本部署到apache tomcat/8.5.20中时遇到问题,我使用jenkins构建和部署,部署有时成功完成,有时由于以下异常而失败:

  1. + tail -n 70 /b001/app/servers/tomcat/Node5/logs/catalina.out
  2. [Pipeline] echo
  3. at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
  4. at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
  5. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
  6. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
  7. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
  8. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
  9. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
  10. at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
  11. at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:173)
  12. at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:153)
  13. at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:95)
  14. at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172)
  15. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196)
  16. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  17. ... 10 more
  18. Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'alertDashboardServiceImpl': Unsatisfied dependency expressed through field 'alertDashBoardRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.se2.repository.AlertDashBoardRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
  19. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)
  20. at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)
  21. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)
  22. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
  23. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
  24. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
  25. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
  26. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226)
  27. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
  28. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
  29. at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
  30. at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307)
  31. at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)
  32. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
  33. ... 33 more
  34. Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.se2.repository.AlertDashBoardRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
  35. at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1717)
  36. at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1273)
  37. at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)
  38. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
  39. ... 46 more
  40. 19-Nov-2020 12:57:58.455 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [/b001/app/servers/tomcat/Node5/webapps/AlertServices.war]
  41. java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/AlertServices]]
  42. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:756)
  43. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
  44. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
  45. at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:988)
  46. at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1860)
  47. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  48. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  49. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  50. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  51. at java.lang.Thread.run(Thread.java:748)

2-我的回购

  1. @Repository
  2. @Transactional
  3. public interface AlertDashBoardRepository
  4. extends CrudRepository<AlertDashboardCommon, Long>, JpaSpecificationExecutor<AlertDashboardCommon> {
  5. int countByIsSeenAndAlertSettingUserSiteId(boolean isSeen, int siteId);
  6. int countByIsSeenAndIsArchiveAndAlertSettingUserSiteId(boolean isSeen, boolean isArchive, int siteId);
  7. int countByAlertSettingUserSiteId(int siteId);
  8. Page<AlertDashboardCommon> findByIsArchiveAndAlertSettingUserUserIdOrderByIdDesc(boolean isArchive, int userId, Pageable pageable);
  9. List<AlertDashboardCommon> findByIsArchiveAndAlertSettingUserUserIdOrderByIdDesc(boolean isArchive, int userId);
  10. List<AlertDashboardCommon> findByIsFlagFalseAndAlertEmailHistoryInsertDateLessThan(Date yearBefore);
  11. Page<AlertDashboardCommon> findByIsArchiveAndAlertSettingUserSiteIdOrderByIdDesc(boolean isArchive, int siteId, Pageable pageable);
  12. List<AlertDashboardCommon> findByIsArchiveAndAlertSettingUserSiteIdOrderByIdDesc(boolean isArchive, int siteId);
  13. @Modifying(clearAutomatically = true)
  14. @Query("update AlertDashboardCommon a set a.isFlag = :isFlag where a.id in (:dashboardIds)")
  15. int updateFlagForDashboards(@Param("isFlag") boolean isFlag, @Param("dashboardIds") List<Long> dashboardIds);
  16. @Modifying(clearAutomatically = true)
  17. @Query("update AlertDashboardCommon a set a.isArchive = :isArchive where a.id in (:dashboardIds)")
  18. int updateArchiveForDashboards(@Param("isArchive") boolean isArchive, @Param("dashboardIds") List<Long> dashboardIds);
  19. @Query("select distinct new com.se2.dto.ManNameId(a.matchedManName, a.matchedManId) from AlertDashboardCommon a where a.alertSetting.user.siteId = :siteId and a.isArchive = :isArchive order by a.matchedManName ASC")
  20. Set<ManNameId> getDistinctManufacturersForUser(@Param("siteId") int siteId, @Param("isArchive") boolean isArchive);
  21. @Query("select distinct(a.alertFeatureCategory) from AlertDashboardCommon a where a.alertSetting.user.siteId = :siteId and a.isArchive = :isArchive order by a.alertFeatureCategory.feature_DISPLAY_ORDER ASC")
  22. List<AlertFeatureCategory> getDistinctFeaturesForUser(@Param("siteId") int siteId, @Param("isArchive") boolean isArchive);
  23. @Query("select distinct a.matchType from AlertDashboardCommon a where a.alertSetting.user.siteId = :siteId and a.isArchive = :isArchive order by a.matchType.isDisplayed ASC, a.matchType.matchId DESC")
  24. Set<AlertMatchType> getMatchTypeForUserByIsArchive(@Param("siteId") int siteId, @Param("isArchive") boolean isArchive);
  25. @Query("select distinct a.alertSetting.alertScope from AlertDashboardCommon a where a.alertSetting.user.siteId = :siteId and a.isArchive = :isArchive")
  26. Set<AlertScope> getScopesForUser(@Param("siteId") int siteId, @Param("isArchive") boolean isArchive);
  27. @Query("select count(a)>0 from AlertDashboardCommon a where a.alertSetting.user.siteId = :siteId and a.isArchive = :isArchive and a.isFlag = :isFlag")
  28. boolean isFoundFlagForUser(@Param("siteId") int siteId, @Param("isArchive") boolean isArchive, @Param("isFlag") boolean isFlag);
  29. }

3-我的服务级别

  1. @Service
  2. public class AlertDashboardServiceImpl implements ICommonService, IAlertDashboardService {
  3. private final static Logger logger = LoggerFactory.getLogger(AlertDashboardServiceImpl.class);
  4. @Autowired
  5. private AlertDashBoardRepository alertDashBoardRepository;
  6. @Autowired
  7. private AlertFeatureCategoryRepository alertFeatureCategoryRepository;
  8. @Autowired
  9. private AlertMatchTypeRepository alertMatchTypeResultRepository;

3-我的主类alert.class

  1. package com.se2;
  2. @SpringBootApplication
  3. @EnableScheduling
  4. public class Alert extends SpringBootServletInitializer {
  5. private final static Logger springBootServletInitializerLogger = LoggerFactory.getLogger(Alert.class);
  6. @Override
  7. protected SpringApplicationBuilder configure(
  8. SpringApplicationBuilder builder) {
  9. return builder.sources(Alert.class);
  10. }
  11. public static void main(String[] args) {
  12. SpringApplication.run(Alert.class, args);
  13. System.out.println("Alert Application Started");
  14. springBootServletInitializerLogger.info("Alert Application Started");
  15. }
  16. }

4-我的pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.se2</groupId>
  7. <artifactId>SE2-Alert-Service-BL</artifactId>
  8. <version>0.0.3</version>
  9. <packaging>war</packaging>
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>2.3.2.RELEASE</version>
  14. </parent>
  15. <properties>
  16. <java.version>1.8</java.version>
  17. <springfox-swagger.version>2.9.2</springfox-swagger.version>
  18. <sonar.host.url>http://localhost:9000</sonar.host.url>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-web</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-devtools</artifactId>
  28. <scope>runtime</scope>
  29. <optional>true</optional>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.projectlombok</groupId>
  33. <artifactId>lombok</artifactId>
  34. <optional>true</optional>
  35. </dependency>
  36. <dependency>
  37. <groupId>io.springfox</groupId>
  38. <artifactId>springfox-swagger2</artifactId>
  39. <version>${springfox-swagger.version}</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>commons-beanutils</groupId>
  43. <artifactId>commons-beanutils</artifactId>
  44. <version>1.9.3</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework.boot</groupId>
  48. <artifactId>spring-boot-starter-data-jpa</artifactId>
  49. </dependency>
  50. <!-- Use MySQL Connector-J -->
  51. <dependency>
  52. <groupId>mysql</groupId>
  53. <artifactId>mysql-connector-java</artifactId>
  54. <version>5.1.35</version>
  55. </dependency>
  56. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
  57. <dependency>
  58. <groupId>org.apache.commons</groupId>
  59. <artifactId>commons-lang3</artifactId>
  60. <version>3.11</version>
  61. </dependency>
  62. <dependency>
  63. <groupId>org.springframework.boot</groupId>
  64. <artifactId>spring-boot-starter-tomcat</artifactId>
  65. <scope>provided</scope>
  66. </dependency>
  67. <!-- H2 Database -->
  68. <dependency>
  69. <groupId>com.h2database</groupId>
  70. <artifactId>h2</artifactId>
  71. <scope>test</scope>
  72. </dependency>
  73. <dependency>
  74. <groupId>io.springfox</groupId>
  75. <artifactId>springfox-swagger2</artifactId>
  76. <version>${springfox-swagger.version}</version>
  77. </dependency>
  78. <dependency>
  79. <groupId>io.springfox</groupId>
  80. <artifactId>springfox-swagger-ui</artifactId>
  81. <version>${springfox-swagger.version}</version>
  82. </dependency>
  83. <dependency>
  84. <groupId>org.springframework.boot</groupId>
  85. <artifactId>spring-boot-starter-test</artifactId>
  86. <scope>test</scope>
  87. </dependency>
  88. <dependency>
  89. <groupId>com.google.code.gson</groupId>
  90. <artifactId>gson</artifactId>
  91. <version>2.8.6</version>
  92. </dependency>
  93. <dependency>
  94. <groupId>javax.mail</groupId>
  95. <artifactId>mail</artifactId>
  96. <version>1.4</version>
  97. </dependency>
  98. <dependency>
  99. <groupId>com.excel.streaming</groupId>
  100. <artifactId>excel-streaming</artifactId>
  101. <version>1.0-SNAPSHOT</version>
  102. </dependency>
  103. <dependency>
  104. <groupId>org.springframework.boot</groupId>
  105. <artifactId>spring-boot-starter-freemarker</artifactId>
  106. </dependency>
  107. <dependency>
  108. <groupId>org.springframework.boot</groupId>
  109. <artifactId>spring-boot-starter-mail</artifactId>
  110. </dependency>
  111. <dependency>
  112. <groupId>org.hibernate.validator</groupId>
  113. <artifactId>hibernate-validator</artifactId>
  114. <version>6.0.18.Final</version>
  115. </dependency>
  116. <dependency>
  117. <groupId>org.hibernate</groupId>
  118. <artifactId>hibernate-validator-annotation-processor</artifactId>
  119. <version>6.0.18.Final</version>
  120. </dependency>
  121. <dependency>
  122. <groupId>io.jsonwebtoken</groupId>
  123. <artifactId>jjwt</artifactId>
  124. <version>0.9.1</version>
  125. </dependency>
  126. <dependency>
  127. <groupId>org.apache.solr</groupId>
  128. <artifactId>solr-solrj</artifactId>
  129. <version>8.4.1</version><!--$NO-MVN-MAN-VER$ -->
  130. </dependency>
  131. <dependency>
  132. <groupId>com.se2.om</groupId>
  133. <artifactId>Se2CacheLayer</artifactId>
  134. <version>0.0.14</version>
  135. </dependency>
  136. <dependency>
  137. <groupId>org.apache.poi</groupId>
  138. <artifactId>poi</artifactId>
  139. <version>3.11</version>
  140. </dependency>
  141. <dependency>
  142. <groupId>org.apache.poi</groupId>
  143. <artifactId>poi-ooxml</artifactId>
  144. <version>3.11</version>
  145. </dependency>
  146. <dependency>
  147. <groupId>com.excel.streaming</groupId>
  148. <artifactId>excel-streaming</artifactId>
  149. <version>1.0-SNAPSHOT</version>
  150. <exclusions>
  151. <exclusion>
  152. <groupId>org.apache.poi</groupId>
  153. <artifactId>poi</artifactId>
  154. </exclusion>
  155. <exclusion>
  156. <groupId>org.apache.poi</groupId>
  157. <artifactId>poi-ooxml</artifactId>
  158. </exclusion>
  159. </exclusions>
  160. </dependency>
  161. <dependency>
  162. <groupId>de.dev-eth0.dummycreator</groupId>
  163. <artifactId>dummy-creator</artifactId>
  164. <version>1.2</version>
  165. <scope>test</scope>
  166. </dependency>
  167. </dependencies>
  168. <build>
  169. <finalName>AlertServices</finalName>
  170. <plugins>
  171. <plugin>
  172. <groupId>org.springframework.boot</groupId>
  173. <artifactId>spring-boot-maven-plugin</artifactId>
  174. </plugin>
  175. <plugin>
  176. <groupId>org.apache.maven.plugins</groupId>
  177. <artifactId>maven-surefire-plugin</artifactId>
  178. <version>3.0.0-M3</version>
  179. <dependencies>
  180. <dependency>
  181. <groupId>org.apache.maven.surefire</groupId>
  182. <artifactId>surefire-junit47</artifactId>
  183. <version>3.0.0-M3</version>
  184. </dependency>
  185. </dependencies>
  186. </plugin>
  187. <!-- MapStruct -->
  188. <plugin>
  189. <groupId>org.apache.maven.plugins</groupId>
  190. <artifactId>maven-compiler-plugin</artifactId>
  191. <configuration>
  192. <source>1.8</source>
  193. <target>1.8</target>
  194. </configuration>
  195. </plugin>
  196. <plugin>
  197. <groupId>org.sonarsource.scanner.maven</groupId>
  198. <artifactId>sonar-maven-plugin</artifactId>
  199. <version>3.4.0.905</version>
  200. </plugin>
  201. <plugin>
  202. <groupId>org.jacoco</groupId>
  203. <artifactId>jacoco-maven-plugin</artifactId>
  204. <version>0.7.5.201505241946</version>
  205. <executions>
  206. <execution>
  207. <id>default-prepare-agent</id>
  208. <goals>
  209. <goal>prepare-agent</goal>
  210. </goals>
  211. </execution>
  212. <execution>
  213. <id>default-report</id>
  214. <phase>prepare-package</phase>
  215. <goals>
  216. <goal>report</goal>
  217. </goals>
  218. </execution>
  219. <execution>
  220. <id>default-check</id>
  221. <goals>
  222. <goal>check</goal>
  223. </goals>
  224. <configuration>
  225. <rules>
  226. <!-- implementation is needed only for Maven 2 -->
  227. <rule implementation="org.jacoco.maven.RuleConfiguration">
  228. <element>BUNDLE</element>
  229. <limits>
  230. <!-- implementation is needed only for Maven 2 -->
  231. <limit implementation="org.jacoco.report.check.Limit">
  232. <counter>COMPLEXITY</counter>
  233. <value>COVEREDRATIO</value>
  234. <minimum>0.0</minimum>
  235. </limit>
  236. </limits>
  237. </rule>
  238. </rules>
  239. </configuration>
  240. </execution>
  241. </executions>
  242. </plugin>
  243. </plugins>
  244. </build>
  245. </project>

最后,我不明白为什么部署有时会成功,tomcat会启动,为什么有时会因为依赖注入失败而失败。
有什么建议吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题