这是我的项目目录结构。
所有controller和其他类以及bean目录都在“WebPortalApplication”类下,正如Spring Boot doc所述,我们没有明确指定要扫描bean的包,只要这些包位于“main”类目录下,对吗?因此,当我运行“WebPortalApplication”文件时,它会生成,但有这样的例外。
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRestController': Unsatisfied dependency expressed through field 'userService';
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'roleRepository';
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException:
Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.epam.webPortal.model.Role
@RestController公共类
@Autowired
UserService userService;
private static final Logger LOGGER = LoggerFactory.getLogger(UserRestController.class);
//-------------------Retrieve All Users--------------------------------------------------------
@RequestMapping(value = "/user/", method = RequestMethod.GET)
public String listAllUsers() {
String userAsJson = "";
List<User> users = userService.findAllUsers();
try {
userAsJson = JsonConvertor.toJson(users);
} catch (Exception ex) {
LOGGER.error("Something went wrong during converting json format");
}
LOGGER.info("displaying all users in json format");
return userAsJson;
}
package com.epam.webPortal.service.user;
import com.epam.webPortal.model.User;
import com.epam.webPortal.repository.role.RoleRepository;
import com.epam.webPortal.repository.user.UserRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional
import java.util.Date;
import java.util.HashSet;
import java.util.List;
@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {
private static final Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class);
@Autowired
private UserRepository userRepository;
@Autowired
private RoleRepository roleRepository;
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
public void saveUser(User user) {
user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
user.setRoles(new HashSet<>(roleRepository.findAll()));
user.setDateRegistered(new Date());
userRepository.save(user);
LOGGER.info("user with username {} successfully saved", user.getUsername());
}
@Override
public User findByUsername(String username) {
return userRepository.findByUsername(username);
}
@Override
public List<User> findAllUsers() {
return userRepository.findAllUsers();
}
@Override
public User findById(Long Id) {
return userRepository.findById(Id);
}
@Override
public void updateUser(User user) {
final User entity = userRepository.findById(user.getId());
if (entity != null) {
entity.setFirstName(user.getFirstName());
entity.setLastName(user.getLastName());
entity.setEmail(user.getEmail());
entity.setSkypeID(user.getSkypeID());
entity.setDateRegistered(new Date());
entity.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
userRepository.save(entity);
LOGGER.info("user with id {} successfully updated", user.getId());
}
}
@Override
public void deleteUserById(Long id) {
userRepository.deleteById(id);
LOGGER.info("user with id {} successfully deleted", id);
}
}
package com.epam.webPortal.model;
import javax.persistence.*;
import java.util.Set;
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(mappedBy = "roles", fetch = FetchType.EAGER)
private Set<User> users;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
看起来您使用的是JPA。所有JPA实体都必须用@Entity注释。
Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.epam.webPortal.model.Role
意味着,Role类缺少@Entity注释。
现在,我们已经有了游戏中的所有图像和类,接下来的工作是构建游戏引擎。Canvas Hero游戏使用标准的MVC架构进行构建,MVC架构使数据、表示和控制分离。本节,我们将创建Controller类,它负责实例化模型和视图,初始化游戏,控制游戏状态,并管理键盘事件。 操作步骤 按照以下步骤,创建Canvas Hero游戏的控制器: 1. 定义Controller类的构造函数: /* 游戏控制器
相关的: null 通过spring配置来配置bean的数量; 通过获取此配置; 从自动配置模块根据所述配置创建并注入@beans; 能够在应用程序中创建bean。 示例:使通过spring配置声明基于咖啡因的的数量成为可能。以下是基于类似问题的公认答案的实现: 首先,引导自动配置模块:
我创建了一个具有REST Web服务和jpa依赖关系的Spring Boot应用程序。应用程序作为独立应用程序自行运行。我试图添加UI层使用vaadin作为一个单独的项目,使用sring引导项目的服务。有没有一种简单的方法可以使Spring Boot应用程序成为一个可以包含在其他项目中的库jar。 我搜索了论坛,发现一些建议不要使用Spring Boot,而是使用spring框架来创建库的线程。只
我有一个单例春豆,可以创建原型豆;这些是从字段中检索的: 现在我想为单例创建一个JUnit-Test: 但是可以理解的是,这并没有正确设置单例的< code>Provider。 有什么办法吗?我希望避免创建创建原型实例的Singleton Factory bean。 或者,对单例使用一个< code>@Lookup-factory方法是否很有可能?我还没有研究过这个。
所以,我有一个类似这样的问题:2020-01-30 22:54:20.059错误8040--[main]O.S.Boot.SpringApplication:应用程序运行失败 UnsatisfiedDependencyException:创建名为“Dieta Controller”的bean时出错:通过字段“Dieta Repository”表示的不满足依赖项;嵌套异常为org.springfra