我知道这个问题在SO上已经问了很多遍了,但是我尝试了所有建议,但都没有奏效。
我想创建一个REST控制器和一个数据源以连接到mysql数据库实例。但是,当我启动Spring Boot应用程序时,出现此错误:
将@EnableJPARepositories
添加到数据源配置类时,错误更改为:
Consider defining a bean of type 'com.boot.myproject.investment.repository.MyRepository' in your configuration.
这是主要类别:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
控制器:
public class MyController {
@Autowired
private MyRepository repo;
//....
}
我的数据源配置类:
@Configuration
public class DatasourceConfiguration {
@Bean
@ConfigurationProperties("app.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
application.properties
:
app.datasource.url=jdbc:mysql://localhost:3306/myAppDB
app.datasource.driver-class-name=com.mysql.jdbc.Driver
app.datasource.username=root
app.datasource.password=
实体:
@Entity
@Table(name="MyEntity")
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private long id;
}
存储库:
@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
}
build.gradle
依赖项:
dependencies {
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.0.4.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.0.8.RELEASE'
compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.5.0'
compile group: 'javax.persistence', name: 'javax.persistence-api', version: '2.2'
compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.0.9.RELEASE'
compile group: 'mysql', name: 'mysql-connector-java', version:'5.1.44'
}
我尝试了几种不同的方法:
尝试使用BasicDataSource
而不是DataSource
:
BasicDataSource basicDataSource =新的BasicDataSource();
尝试使用@Transactional
而不是@Repository
来注释存储库类,尽管我认为这没有关系。
我想知道我的配置出了什么问题,它给了我这种错误。
答案 0 :(得分:0)
我有一个非常配置,唯一的区别是我的LocalContainerEntitymanagerFactoryBean
中有一个DatasourceConfiguration
。
除了其他注释外,添加以下内容:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory( DataSource dataSource )
{
LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
entityManagerFactory.setDataSource( dataSource );
entityManagerFactory.setPackagesToScan( MyEntity.class.getPackage().getName() );
entityManagerFactory.setJpaVendorAdapter( new HibernateJpaVendorAdapter() );
return entityManagerFactory;
}