我正在使用MongoDb,在我的春季启动项目中,这是我的实体用户
package com.logan.cricketbeting.entities;
import java.util.Date;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public class User {
@Id
private String id;
private String username;
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
这是用户存储库
package com.logan.cricketbeting.repositories;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;
import com.logan.cricketbeting.entities.User;
//this is the repositiory for users
@Repository
public interface UserRepository extends MongoRepository<User, String> {
@Query
public User findByUsername(String username);
}
这是Userservice
package com.logan.cricketbeting.Service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.logan.cricketbeting.entities.User;
@Service
public interface UserService {
User saveUser(User User);
User updateUser(User User);
void deleteUser(User User);
User getUserByusername(String username);
List<User> getAllUsers();
}
用户服务Impl
package com.logan.cricketbeting.Service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.logan.cricketbeting.entities.User;
import com.logan.cricketbeting.repositories.UserRepository;
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public User saveUser(User User) {
// TODO Auto-generated method stub
return userRepository.save(User);
}
@Override
public User updateUser(User User) {
// TODO Auto-generated method stub
return null;
}
@Override
public void deleteUser(User User) {
// TODO Auto-generated method stub
}
@Override
public User getUserByusername(String username) {
// TODO Auto-generated method stub
return userRepository.findByUsername(username);
}
@Override
public List<User> getAllUsers() {
// TODO Auto-generated method stub
return null;
}
}
这是我的索引控制器
package com.logan.cricketbeting.controllers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.logan.cricketbeting.Service.UserServiceImpl;
import com.logan.cricketbeting.entities.User;
@Controller
public class IndexController {
@Autowired
private User user;
@Autowired
private UserServiceImpl userservice;
@RequestMapping("/login")
public String login()
{
return "user/login";
}
@RequestMapping("/home")
public String index() {
return "user/home.html";
}
@RequestMapping("/aboutus")
public String aboutus()
{
return "user/about-us";
}
@RequestMapping("/faqs")
public String faqs()
{
return "user/faqs";
}
@RequestMapping("/register")
public String register()
{
return "user/register";
}
@RequestMapping("/contactus")
public String contactus()
{
return "user/contact-us";
}
@RequestMapping("/extra-menu")
public String extramenu()
{
return "extra-menu";
}
@RequestMapping("/register")
@ResponseBody
public String registers()
{
user.setUsername("logan");
user.setPassword("password");
userservice.saveUser(user);
return "User registered";
}
}
这是我的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>com.logan.cricketbeting</groupId>
<artifactId>cricketbettingspring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cricketbettingspring</name>
<description>cricketbettingspring</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-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</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>
</plugins>
</build>
</project>
我收到此错误
说明:
com.logan.cricketbeting.controllers.IndexController中的字段用户 需要“ com.logan.cricketbeting.entities.User”类型的Bean 找不到。
操作:
考虑定义一个类型的bean 配置中的“ com.logan.cricketbeting.entities.User”。
我已经创建了带有@Document批注的实体,但是它仍然给我这个错误,不知道如何解决它?
答案 0 :(得分:0)
您要尝试的是在User
中注入IndexController
:
@Autowired
private User user;
用户不是由Spring IoC管理的bean,因此您会收到此错误:
Field user in com.logan.cricketbeting.controllers.IndexController required a bean of type 'com.logan.cricketbeting.entities.User' that could not be found.
解决方案:
只需在User
方法中以及您需要的任何地方实例化您的registers()
:
@RequestMapping("/register")
@ResponseBody
public String registers() {
User user = new User();
user.setUsername("logan");
user.setPassword("password");
userservice.saveUser(user);
return "User registered";
}
答案 1 :(得分:0)
您可以通过以下方式注释您的用户实体
@Component
,您需要做的就是让Spring ApplicationContext找到它。喜欢
@Component
@Document(collection = "users")
public class User {
@Id
private String id;
private String username;
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}