我是Spring环境的新手。我试图使用SpringBoot开发一个基本的MVC应用程序,并将Hibernate作为ORM,将MYSQL作为数据库。我在设置依赖项和配置时遇到了很多麻烦。目前,我对以下错误感到震惊,但无法解决该错误。
org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.
这是我的应用程序中的设置。它没有 服务层和jsp页面, 以避免混乱
数据库:
MySql-一个名为“用户”的数据库已经存在,并且具有一个名为“用户”的表以及一个示例用户列表
User.java(模型)
@Entity @Table(name = "Users") public class User { @Id @GeneratedValue public String id; public String username; public String firstname; public String lastname; public String password; }
UserRepository:
@Repository @Table(name = "Users") public interface UserRepository extends JpaRepository<User, String> { }
UserController:
@RestController public class UserController { private UserRepository userRepository; @Autowired public UserController(UserRepository userRepository) { this.userRepository = userRepository; } @RequestMapping("user") public void getUser(@RequestParam("id") String id) { User user = userRepository.findOne(id); } }
Application.properties:
server.port:9000 spring.datasource.url:jdbc:mysql:// localhost / Users spring.datasource.driverClassName:com.mysql.jdbc.Driver spring.datasource.username:根 spring.datasource.password:
server.port:9000
spring.datasource.url:jdbc:mysql:// localhost / Users
spring.datasource.driverClassName:com.mysql.jdbc.Driver
spring.datasource.username:根
spring.datasource.password:
POM.xml
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.1.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> </exclusion> </exclusions> </dependency> <!-- HIBERNATE --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.3.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.0.Final</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <optional>true</optional> </dependency> <!-- Spring ORM, works with Hibernate --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> </dependency> <!-- MYSQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
编辑:添加主类
主班
@ComponentScan @Configuration @EnableAutoConfiguration public class ApplicationStart { public static void main(String[] args) { SpringApplication.run(ApplicationStart.class, args); } }
这是我的应用程序的当前设置。我什至不知道在哪里寻找错误,并且互联网上的教程对我的事业没有帮助。因此,非常感谢有关如何解决异常的任何帮助。
如果需要更多信息,请发表评论。
谢谢-
确保您application.properties位于受支持的位置之一。
application.properties
当前目录的/ config子目录。 当前目录 类路径/ config包 类路径根 该列表按优先级排序(列表中较高的位置优先于较低的项目)。
该列表按优先级排序(列表中较高的位置优先于较低的项目)。
尽管用a分隔属性文件中的键/值对:应该可以,但我建议坚持使用更常用的=分隔符。
:
=
您的pom包含一些不必要的混乱,我建议您移动。您只需要对mysql-connector- java其他所有杂物的依赖关系即可(其他依赖关系是通过您依赖的入门项目提供的)。
mysql-connector- java
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- MYSQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
这些应该是您需要的一切,版本和传递依赖项由spring-boot-dependency pom.xml负责。(首发父母的祖父母)。
使用@EnableAutoConfiguration注释时,带有注释的类还将用于确定从哪个包开始扫描。通常,您将在您的入门类上添加此批注。建议将此应用程序类放在顶级包中(即your.package.application.StarterClass),所有其他包应为该包的子包。这样,将自动检测所有类别。
@EnableAutoConfiguration
your.package.application.StarterClass
如果无法做到这一点,则可能需要添加其他内容@ComponentScan以指定要从中开始扫描的基本程序包,并@EntityScan指定包含您的实体的程序包。
@ComponentScan
@EntityScan