考虑定义类型' org.springframework.jdbc.core.JdbcTemplate'的bean。在您的配置中

时间:2018-04-25 05:56:31

标签: java spring-boot jdbctemplate

  

包名:com.sample

     

SpringMain.java

ex. `df1.drop(df2.col("ACCT_NBR"));`
  

pacakge name:com.sample.infra

     

SampleClass.java

@SpringBootApplication
@ComponentScan
public class SpringMain implements CommandLineRunner
{
    @Autowired
    SampleClass sampleClass;

    public static void main(String[] args) {
        SpringApplication.run(SpringMain.class, args);

    }

    @Override
    public void run(String... args) throws Exception 
    {
        sampleClass.callThread();
    }
}
  

pacakage name:com.sample.dao

     

ThreadSample.java

@Component
public class SampleClass 
{

    @Autowired
    ThreadSample threadSample;

    public void callThread()
    {
        System.out.println("Inside SampleClass");
        threadSample.start();
    }
}

application.properties

@Component
public class ThreadSample extends Thread
{
    @Autowired
    JdbcTemplate jdbcTemplate;

    public void run()
    {
        init();
    }

    public String init()
    {
        System.out.println("Inside ThreadSample");
        SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("sp_procedureName");

        Map<String, Object> initiatorMapData = jdbcCall.execute();

        JSONArray initiatorJSONArray = JSONArray.fromObject(initiatorMapData.get("#result-set-1"));

        System.out.println("GetInitiators JSONArray: "+initiatorJSONArray);

        return initiatorJSONArray.toString();
    }
}

的pom.xml

#DB Credentials
spring.datasource.url=jdbc:jtds:sqlserver://1.12.13.14
spring.datasource.username=uname
spring.datasource.password=pwd

现在,当我将所有文件放在一个包下时,它可以正常工作。但是当我根据功能分发时,就会发生错误。我该如何解决这个问题。

按照以下建议添加basepackages后,我收到错误

<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>springBoot</groupId>
  <artifactId>springBoot</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <properties>
        <java.version>1.8</java.version>
    </properties>

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
    </parent>

    <dependencies>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
         <exclusions>
            <exclusion>
                <artifactId>tomcat-annotations-api</artifactId>
                <groupId>org.apache.tomcat</groupId>
            </exclusion>
            <exclusion>
                <artifactId>tomcat-embed-core</artifactId>
                <groupId>org.apache.tomcat.embed</groupId>
            </exclusion>
            <exclusion>
                <artifactId>tomcat-embed-el</artifactId>
                <groupId>org.apache.tomcat.embed</groupId>
            </exclusion>
            <exclusion>
                <artifactId>tomcat-embed-websocket</artifactId>
                <groupId>org.apache.tomcat.embed</groupId>
            </exclusion>
         </exclusions>
     </dependency>

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>


        <dependency>
            <groupId>net.sourceforge.jtds</groupId>
            <artifactId>jtds</artifactId>
            <version>1.3.1</version>
        </dependency>

<dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>

          <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

4 个答案:

答案 0 :(得分:0)

删除

@ComponentScan

或将其修改为

@ComponentScan(basePackage="com.sample")

答案 1 :(得分:0)

添加以下内容:

@ComponentScan(basePackages={"com.sample"})

答案 2 :(得分:0)

添加您的配置

@Bean
public TaskExecutor taskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(5);
    executor.setMaxPoolSize(10);
    executor.setQueueCapacity(25);
    return executor;
}

答案 3 :(得分:0)

我今天遇到了类似的问题,我通过创建一个DatabaseConfig类来解决了这个问题

@Configuration
   public class DatabaseConfig {
      @Bean
      public DataSource dataSource(){
         DriverManagerDataSource dataSource = new DriverManagerDataSource();
         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
         dataSource.setUrl("jdbc:mysql://localhost:3306/myDB");
         dataSource.setUsername( "root" );
         dataSource.setPassword( "" );
         return dataSource;
      }
   }

PS:我有一个MySQL DB。您需要设置正确的驱动程序类和URL