我正在通过JPA入门教程来解决Spring Boot的问题。
但是这些问题与我所遇到的有点不同。
结构体
java | helloWorld | web/ -- HelloWorldController Application Customer CustomerRepository ServletInitializer
如您所见,我所有与JPA相关的软件包都与我的应用程序文件处于同一级别。根据教程(https://spring.io/guides/gs/accessing- data-jpa/),这应该可行
我的申请班
package helloWorld; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Autowired CustomerRepository customerRepository; @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } }
客户资料库
package helloWorld; import org.springframework.data.repository.CrudRepository; import java.util.List; public interface CustomerRepository extends CrudRepository<Customer, Long> { List<Customer> findByLastName(String lastName); }
尝试使用时,@Autowired我收到
@Autowired
*************************** APPLICATION FAILED TO START *************************** Description: Field customerRepository in helloWorld.Application required a bean of type 'helloWorld.CustomerRepository' that could not be found. Action: Consider defining a bean of type 'helloWorld.CustomerRepository' in your configuration.
另外,添加scanBasePackages={"helloWorld"})对您@SpringBootApplication没有帮助,从我阅读的内容中也不需要添加。
scanBasePackages={"helloWorld"})
@SpringBootApplication
pom.xml :
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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>helloWorld.com.example</groupId> <artifactId>helloWorld</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>fireCommerce</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.1.0</version> <configuration> <resourceGroup>maven-projects</resourceGroup> <appName>${project.artifactId}-${maven.build.timestamp}</appName> <region>westus</region> <javaVersion>1.8</javaVersion> <deploymentType>war</deploymentType> </configuration> </plugin> </plugins> </build> </project>
链接到github项目
您将排除JPA存储库的自动配置。删除其中的代码行application.properties,让Spring制作CustomerRepository一个bean并对其进行配置。
application.properties
CustomerRepository
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration