Mybatis-spring-boot - 无法使用以bean

时间:2016-12-12 12:42:12

标签: java spring spring-boot mybatis

下面是我的配置类。

@Configuration
@Component
class Config {
@Bean
@ConfigurationProperties(prefix = "my.spring.datasource")
public javax.sql.DataSource dataSource() {

    return DataSourceBuilder
            .create()
            .build();
}

}  

我正在使用Spring boot和spring-boot-mybatis-starter。我的application.properties文件已正确完成。请注意,我遵循此:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/

然而,在启动期间我收到错误:

- Bean method 'dataSource' not loaded because @ConditionalOnProperty (spring.datasource.type) did not find property 'spring.datasource.type'
- Bean method 'dataSource' not loaded because @ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'jndi-name'
- Bean method 'dataSource' not loaded because @ConditionalOnClass did not find required class 'javax.transaction.TransactionManager'   
你能帮助我吗?

当我删除DataSourceAutoConfiguration时,我得到:

- Bean method 'dataSource' not loaded because @ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'jndi-name'
- Bean method 'dataSource' not loaded because @ConditionalOnClass did not find required class 'javax.transaction.TransactionManager'  

当我删除datasource bean并删除所有datasouece属性中的前缀my.时,一切正常。

修改

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method sqlSessionTemplate in org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration required a bean of type 'org.apache.ibatis.session.SqlSessionFactory' that could not be found.
    - Bean method 'sqlSessionFactory' in 'MybatisAutoConfiguration' not loaded because @ConditionalOnMissingBean (types: org.apache.ibatis.session.SqlSessionFactory; SearchStrategy: all) found bean 'sqlSessionFactory'


Action:

Consider revisiting the conditions above or defining a bean of type 'org.apache.ibatis.session.SqlSessionFactory' in your configuration.   

application.properties

my.spring.datasource.driverClassName=***
my.spring.datasource.url=****
my.spring.datasource.username=user
my.spring.datasource.password=****
my.spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

1 个答案:

答案 0 :(得分:0)

确保您已在application.yml

中配置了以下属性
spring:
  datasource:
    url: jdbc:oracle:thin:@db-host:port/catalog
    username: user
    password: pass
    driver-class-name: oracle.jdbc.OracleDriver

一旦这样做,您就可以将DataSource注入 sping组件; 如下图所示。

@Autowired
DataSource dataSource;