Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring4数据源连接_Spring_Annotations_Datasource - Fatal编程技术网

Spring4数据源连接

Spring4数据源连接,spring,annotations,datasource,Spring,Annotations,Datasource,在我的web应用程序中有一个Spring4.1.4框架,我想外部化DB配置,然后将DB信息放入META-INF/context.xml中 我经常使用XML Spring配置,如果我尝试按如下方式检索连接: applicationContext-dataSource.xml 一切正常。。如果我尝试使用如下注释: AppConfig 爪哇岛 我得到以下错误: Caused by: org.springframework.beans.BeanInstantiationException: Failed

在我的web应用程序中有一个Spring4.1.4框架,我想外部化DB配置,然后将DB信息放入META-INF/context.xml中

我经常使用XML Spring配置,如果我尝试按如下方式检索连接:

applicationContext-dataSource.xml

一切正常。。如果我尝试使用如下注释:

AppConfig

爪哇岛

我得到以下错误:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/lookup/JndiDataSourceLookup
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
... 28 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/lookup/JndiDataSourceLookup
at it.informagiovani.core.dbmanager.DataSourceConfiguration.dataSource(DataSourceConfiguration.java:14)
at it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12.CGLIB$dataSource$0(<generated>)
at it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12$$FastClassBySpringCGLIB$$4c237871.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309)
at it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12.dataSource(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
... 29 more
原因:org.springframework.beans.beans实例化异常:未能实例化[javax.sql.DataSource]:工厂方法“DataSource”引发异常;嵌套的异常是java.lang.NoClassDefFoundError:org/springframework/jdbc/datasource/lookup/JndiDataSourceLookup
位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:189)
位于org.springframework.beans.factory.support.ConstructorResolver.InstanceUsingFactoryMethod(ConstructorResolver.java:588)
... 28多
原因:java.lang.NoClassDefFoundError:org/springframework/jdbc/datasource/lookup/JndiDataSourceLookup
位于it.informagiovani.core.dbmanager.DataSourceConfiguration.dataSource(DataSourceConfiguration.java:14)
在it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12.CGLIB$dataSource$0()
在it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12$$FastClassBySpringCGLIB$$4c237871.invoke()
位于org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309)
在it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12.dataSource()上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:162)
... 还有29个
显然,jar在Spring JDBC4.1.4中。你能帮我吗


我的pom.xml如下所示:

<dependencies>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>2.0.5.RELEASE</version>
    <exclusions>
            <exclusion>
                <groupId>spring-orm</groupId>
                <artifactId>spring-orm</artifactId>
            </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>2.5.1</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.0.2.RELEASE</version>
</dependency>

mysql
mysql连接器java
5.1.39
org.springframework
spring上下文
4.1.4.1发布
org.springframework
弹簧芯
4.1.4.1发布
org.springframework
SpringJDBC
4.1.4.1发布
org.springframework.data
spring数据jpa
2.0.5.1发布
春季甲虫
春季甲虫
org.springframework
春季甲虫
2.5.1
org.hibernate
休眠实体管理器
4.0.1.最终版本
org.springframework.boot
弹簧靴启动器jdbc
2.0.2.1发布

即使我添加了springbootstarter依赖项,错误也是一样的。
谢谢

展示您的pom。你有spring boot starter jdbc依赖项吗?没有。。我添加依赖项并重试。谢谢我真的希望这不是你真正使用的代码。。。是否每次需要数据库连接时都要加载上下文?不要那样做。另外,您的依赖关系也是一团糟,您至少混合了3个spring版本4.1.4、2.5.1和5.0.6…lol只是一个例子。该bean不存在,我直接将.xml文件配置中编写的数据源作为依赖项注入DAO中。我搞砸了spring版本,因为4.1.4版本。向我提出一个类未发现异常。但问题仍然是:为什么注释会出现这种错误??
public Connection getConnection() {
    Connection conn = null;
    try {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("resources/beans.xml"); 
        DataSource dataSource = (DataSource) context.getBean("dataSource");
        conn = dataSource.getConnection();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return conn;
}
@Configuration
public class DataSourceConfiguration {
@Bean
public DataSource dataSource() {
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
    dsLookup.setResourceRef(true);
    DataSource dataSource = dsLookup.getDataSource("jdbc/informagiovani");
    return dataSource;
}
}
public Connection getConnection() {
    AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(DataSourceConfiguration.class);
    Connection conn = null;
    try {
        DataSource dataSource = ctx.getBean(DataSource.class);
        conn = dataSource.getConnection();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return conn;
}
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/lookup/JndiDataSourceLookup
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
... 28 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/lookup/JndiDataSourceLookup
at it.informagiovani.core.dbmanager.DataSourceConfiguration.dataSource(DataSourceConfiguration.java:14)
at it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12.CGLIB$dataSource$0(<generated>)
at it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12$$FastClassBySpringCGLIB$$4c237871.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309)
at it.informagiovani.core.dbmanager.DataSourceConfiguration$$EnhancerBySpringCGLIB$$6519ad12.dataSource(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
... 29 more
<dependencies>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>2.0.5.RELEASE</version>
    <exclusions>
            <exclusion>
                <groupId>spring-orm</groupId>
                <artifactId>spring-orm</artifactId>
            </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>2.5.1</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.0.2.RELEASE</version>
</dependency>