
[英]NoSuchBeanDefinitionException: No unique bean of type [javax.activation.DataSource] is defined: expected single bean but found 0:
[英]Error: Field dataSource in required a bean of type 'javax.activation.DataSource' that could not be found
我在SPringBoot中的数据源有问题。 我想使用JDBC并从数据源获取数据,但出现错误:说明:
com.example.My.MyApplication中的字段dataSource需要找不到类型为'javax.activation.DataSource'的bean。
行动:
考虑在配置中定义类型为“ javax.activation.DataSource”的bean。
它与MyApplication.java中的DataSourse有关
下面是代码
我的schema.sql:
CREATE TABLE CUSTOMER(
ID NUMBER(10) NOT NULL,
NAME VARCHAR2(100) NOT NULL,
EMAIL VARCHAR2(100) NOT NULL,
CREATED_DATE DATE NOT NULL,
CONSTRAINT CUSTOMER_PK PRIMARY KEY (ID)
);
和data.sql
INSERT INTO "CUSTOMER" (ID, NAME, EMAIL, CREATED_DATE) VALUES(1,
'mkyong','111@yahoo.com', TO_DATE('2017-02-11', 'yyyy-mm-dd'));
INSERT INTO "CUSTOMER" (ID, NAME, EMAIL, CREATED_DATE) VALUES(2,
'yflow','222@yahoo.com', TO_DATE('2017-02-12', 'yyyy-mm-dd'));
INSERT INTO "CUSTOMER" (ID, NAME, EMAIL, CREATED_DATE) VALUES(3,
'zilap','333@yahoo.com', TO_DATE('2017-02-13', 'yyyy-mm-dd'));
和我的Customer.java包com.example.My.model;
import java.sql.Date;
public class Customer {
int id;
String name;
String email;
Date date;
public Customer(int id, String name, String email, Date date) {
this.id = id;
this.name = name;
this.email = email;
this.date = date;
}
}
CustomerRepository.java
import com.example.My.model.Customer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class CustomerRepository {
@Autowired
private JdbcTemplate jdbcTemplate;
// thanks Java 8, look the custom RowMapper
public List<Customer> findAll() {
List<Customer> result = jdbcTemplate.query(
"SELECT id, name, email, created_date FROM customer",
(rs, rowNum) -> new Customer(rs.getInt("id"),
rs.getString("name"), rs.getString("email"),
rs.getDate("created_date"))
);
return result;
}
}
MyApplication.java
package com.example.My;
import com.example.My.dao.CustomerRepository;
import com.example.My.model.Customer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.activation.DataSource;
import java.util.List;
import static java.lang.System.exit;
@SpringBootApplication
public class MyApplication implements CommandLineRunner {
/**
*
*/
@Autowired
DataSource dataSource;
@Autowired
CustomerRepository customerRepository;
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("DATASOURCE = " + dataSource);
/// Get dbcp2 datasource settings
// BasicDataSource newds = (BasicDataSource) dataSource;
// System.out.println("BasicDataSource = " + newds.getInitialSize());
System.out.println("Display all customers...");
List<Customer> list = customerRepository.findAll();
list.forEach(x -> System.out.println(x));
System.out.println("Done!");
exit(0);
}
}
您在MyApplication
导入了错误的DataSource
类型。 您需要导入javax.sql.DataSource
,而不是javax.activation.DataSource
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.