Printemps de démarrage échec de démarrage de service rest
J'ai essayé de simuler le Service Web RESTful de la source page d'accueil "https://spring.io/guides/gs/rest-service/". Je suis en mesure d'obtenir les résultats attendus pour l'exemple donné, j'ai donc fait une petite amélioration je.e a essayé de chercher un peu de compter à partir de la base de données oracle et de les afficher en tant que partie de la réponse mais ça ne fonctionne pas.
Maven compilation fonctionne bien mais quand je lance le printemps de démarrage, j'obtiens l'erreur ci-dessous, je ne sais pas quelle pourrait être la raison. Je suis nouveau au printemps, quelqu'un peut-il m'aider?
Mes détails de configuration sont
Mac 10.9
EclipseLuna 4.4.1
Java 8
maven3.2.1
printemps 3.6
Printemps Erreur D'Initialisation:
:: Spring Boot :: (v1.2.2.RELEASE)
2015-03-11 18:36:25.862 INFO 7298 --- [ main]
com.test.Application : Starting Application on LM-MAA-00668611 with PID 7298 (/Users/sijayaraman/Documents/workspace/luna/CopyofSpringRest/target/classes started by sijayaraman in /Users/sijayaraman/Documents/workspace/luna/CopyofSpringRest)
2015-03-11 18:36:25.900 INFO 7298 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5427c60c: startup date [Wed Mar 11 18:36:25 IST 2015]; root of context hierarchy
2015-03-11 18:36:26.366 INFO 7298 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
2015-03-11 18:36:26.405 INFO 7298 --- [ main] .b.l.ClasspathLoggingApplicationListener : Application failed to start with classpath: [file:/Users/sijayaraman/Documents/workspace/luna/CopyofSpringRest/target/classes/, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/boot/spring-boot-starter-web/1.2.2.RELEASE/spring-boot-starter-web-1.2.2.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/boot/spring-boot-starter/1.2.2.RELEASE/spring-boot-starter-1.2.2.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/boot/spring-boot/1.2.2.RELEASE/spring-boot-1.2.2.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/boot/spring-boot-autoconfigure/1.2.2.RELEASE/spring-boot-autoconfigure-1.2.2.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/boot/spring-boot-starter-logging/1.2.2.RELEASE/spring-boot-starter-logging-1.2.2.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/slf4j/jcl-over-slf4j/1.7.10/jcl-over-slf4j-1.7.10.jar, file:/Users/sijayaraman/.m2/maven.repo/org/slf4j/slf4j-api/1.7.10/slf4j-api-1.7.10.jar, file:/Users/sijayaraman/.m2/maven.repo/org/slf4j/jul-to-slf4j/1.7.10/jul-to-slf4j-1.7.10.jar, file:/Users/sijayaraman/.m2/maven.repo/org/slf4j/log4j-over-slf4j/1.7.10/log4j-over-slf4j-1.7.10.jar, file:/Users/sijayaraman/.m2/maven.repo/ch/qos/logback/logback-classic/1.1.2/logback-classic-1.1.2.jar, file:/Users/sijayaraman/.m2/maven.repo/ch/qos/logback/logback-core/1.1.2/logback-core-1.1.2.jar, file:/Users/sijayaraman/.m2/maven.repo/org/yaml/snakeyaml/1.14/snakeyaml-1.14.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/boot/spring-boot-starter-tomcat/1.2.2.RELEASE/spring-boot-starter-tomcat-1.2.2.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/apache/tomcat/embed/tomcat-embed-core/8.0.20/tomcat-embed-core-8.0.20.jar, file:/Users/sijayaraman/.m2/maven.repo/org/apache/tomcat/embed/tomcat-embed-el/8.0.20/tomcat-embed-el-8.0.20.jar, file:/Users/sijayaraman/.m2/maven.repo/org/apache/tomcat/embed/tomcat-embed-logging-juli/8.0.20/tomcat-embed-logging-juli-8.0.20.jar, file:/Users/sijayaraman/.m2/maven.repo/org/apache/tomcat/embed/tomcat-embed-websocket/8.0.20/tomcat-embed-websocket-8.0.20.jar, file:/Users/sijayaraman/.m2/maven.repo/com/fasterxml/jackson/core/jackson-databind/2.4.5/jackson-databind-2.4.5.jar, file:/Users/sijayaraman/.m2/maven.repo/com/fasterxml/jackson/core/jackson-annotations/2.4.5/jackson-annotations-2.4.5.jar, file:/Users/sijayaraman/.m2/maven.repo/com/fasterxml/jackson/core/jackson-core/2.4.5/jackson-core-2.4.5.jar, file:/Users/sijayaraman/.m2/maven.repo/org/hibernate/hibernate-validator/5.1.3.Final/hibernate-validator-5.1.3.Final.jar, file:/Users/sijayaraman/.m2/maven.repo/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar, file:/Users/sijayaraman/.m2/maven.repo/org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar, file:/Users/sijayaraman/.m2/maven.repo/com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-core/4.1.5.RELEASE/spring-core-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-web/4.1.5.RELEASE/spring-web-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-aop/4.1.5.RELEASE/spring-aop-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-context/4.1.5.RELEASE/spring-context-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-webmvc/4.1.5.RELEASE/spring-webmvc-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-expression/4.1.5.RELEASE/spring-expression-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-jdbc/4.1.5.RELEASE/spring-jdbc-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-beans/4.1.5.RELEASE/spring-beans-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/org/springframework/spring-tx/4.1.5.RELEASE/spring-tx-4.1.5.RELEASE.jar, file:/Users/sijayaraman/.m2/maven.repo/com/oracle/ojdbc5/11.2.0.1.0/ojdbc5-11.2.0.1.0.jar]
2015-03-11 18:36:26.411 ERROR 7298 --- [ main] o.s.boot.SpringApplication : Application startup failed
java.lang.IllegalStateException: Could not evaluate condition on org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration#transactionManager due to internal class not found. This can happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake)
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:51)
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:102)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:194)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:124)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:318)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:239)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at com.test.Application.main(Application.java:11)
Caused by: java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
at java.lang.Class.getDeclaredMethods(Class.java:1962)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:490)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:474)
at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:534)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:677)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:621)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:591)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1397)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:968)
at org.springframework.boot.autoconfigure.condition.BeanTypeRegistry$OptimizedBeanTypeRegistry.addBeanTypeForNonAliasDefinition(BeanTypeRegistry.java:257)
at org.springframework.boot.autoconfigure.condition.BeanTypeRegistry$OptimizedBeanTypeRegistry.addBeanType(BeanTypeRegistry.java:246)
at org.springframework.boot.autoconfigure.condition.BeanTypeRegistry$OptimizedBeanTypeRegistry.getNamesForType(BeanTypeRegistry.java:227)
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.collectBeanNamesForType(OnBeanCondition.java:158)
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getBeanNamesForType(OnBeanCondition.java:147)
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchingBeans(OnBeanCondition.java:119)
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchOutcome(OnBeanCondition.java:83)
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:45)
... 16 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.aopalliance.aop.Advice
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 36 common frames omitted
2015-03-11 18:36:26.422 INFO 7298 --- [ main] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5427c60c: startup date [Wed Mar 11 18:36:25 IST 2015]; root of context hierarchy
2015-03-11 18:36:26.424 WARN 7298 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception thrown from ApplicationListener handling ContextClosedEvent
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5427c60c: startup date [Wed Mar 11 18:36:25 IST 2015]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:344)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:869)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.doClose(EmbeddedWebApplicationContext.java:150)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:342)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at com.test.Application.main(Application.java:11)
2015-03-11 18:36:26.424 WARN 7298 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception thrown from LifecycleProcessor on context close
Application.java
package com.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Employee.java
package com.test;
public class Employee {
private final int count;
private final String name;
public Employee(int count,String name) {
this.count = count;
this.name = name;
}
public int getCount() {
return count;
}
public String getName() {
return name;
}
}
EmployeeController.java
package com.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EmployeeController {
@Autowired
private EmployeeDao dao;
@RequestMapping("/employee")
public Employee employee(@RequestParam(value="name") String name) {
System.out.println("Count="+dao.getTotalCount());
return new Employee(dao.getTotalCount(),name);
}
}
EmployeeDao.java
package com.test;
public interface EmployeeDao {
public int getTotalCount();
}
EmployeeDaoImpl.java
package com.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@Component
public class EmployeeDaoImpl implements EmployeeDao{
@Autowired
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public int getTotalCount(){
@SuppressWarnings("deprecation")
int numOfTrades = jdbcTemplate.queryForInt("select count(*) from employee");
return numOfTrades;
}
}
application.propriétés
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@testserver.com:2126:QADBA9FU
spring.datasource.username=test
spring.datasource.password=password123
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc5</artifactId>
<version>11.2.0.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
OriginalL'auteur Sivasakthi Jayaraman | 2015-03-11
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez printemps-démarrage, ajoutez la dépendance ci-dessous pour utiliser la configuration automatique de
pom.xml
Dans votre application.propriétés
EDIT 1
Supprimer ce à vos EmployeeController
au lieu d'utiliser
Aussi, d'annoter la classe
EDIT 02
Télécharger le ojdbc6.jar de http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html et de l'installer dans votre maven repository local
Puis changer votre oracle de dépendance par
EmployeeDaoImpl
comme un@Repository
pour obtenirJdbcTemplate
injecté. Et supprimersbeans.xml
... et tout ce qui est d'essayer de le charger.Et supprimer le
spring-jdbc
importer à partir depom.xml
.JdbcTemplate doit avoir @Autocâblés
chargement de l'application de Contexte à partir de xml n'est pas nécessaire. J'ai mis à jour ma réponse.
merci pour la recherche sur cette question. J'ai modifié selon votre suggestion, mais même problème existe, je suis toujours cette erreur "n'a pas Pu évaluer l'état sur org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoconfiguration#transactionManager" erreur. J'ai mis à jour l'a suggéré le code dans le post original aussi. Pouvez-vous s'il vous plaît vérifiez?
OriginalL'auteur Eddú Meléndez
Il pourrait ne pas être la racine de votre problème, mais vous n'êtes pas accès à votre dao correctement. Le principe de Printemps est l'Injection de Dépendance, ce qui signifie
Controller
ne devrait pas être de se de DAO. Au lieu de cela, il devrait être autocâblés ou de définir dans le fichier de configuration.Alors vous
Controller
devrait ressembler à ceci:Vous aurez besoin d'ajouter les
sbeans.xml
à la configuration. Essayez d'ajouter@ImportXml("classpath:sbeans.xml")
àApplication.java
:ou, mieux encore, de réécriture
sbeans.xml
en Java.Merci pour votre aide.
OriginalL'auteur jny
Vous obtenez -
Afin de résoudre le problème avec
OriginalL'auteur farrellmr