java - JpaRepository 在服务类中获取 Null
问题描述
我是 Java Spring boot 的新手,我正在使用 JPA 开发 REST API。所以,我想在@RestController
. 我使用@Component
类头的注释顶部并使用@Autowired
注释来声明我的存储库实例。但是,存储库实例总是为空。
应用类
@SpringBootApplication
@EnableJpaAuditing
public class PriceHandlerServiceApplication
{
public static void main( String[] args )
{
SpringApplication.run( PriceHandlerServiceApplication.class, args );
}
}
存储库
@Repository
public interface ConfigRepository extends JpaRepository<ServiceConfiguration,Long>
{
}
模型类
@Entity
@Table( name = "service_configuration" )
@EntityListeners( AuditingEntityListener.class )
public class ServiceConfiguration
{
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
@JsonProperty("id")
private Long id;
@NotBlank
@JsonProperty( "name" )
private String name;
@JsonProperty( "value" )
private Double value;
public ServiceConfiguration()
{}
}
服务等级
@Component
public class ConfigurationHandler
{
@Autowired
private static ConfigRepository configRepository;
public static List<ServiceConfiguration> getAllConfigurations(){
return configRepository.findAll();
}
}
我叫ConfigurationHandler.getAllConfigurations()
另一个班级。但configRepository
总是为空。
[更新]
删除静态关键字,但仍然无法正常工作。仍然configRepository
存储库为空
@Component
public class ConfigurationHandler
{
@Autowired
private ConfigRepository configRepository;
public ConfigurationHandler()
{ }
public List<ServiceConfiguration> getAllConfigurations()
{
return configRepository.findAll();
}
}
解决方案
需要检查的几件事:
从使用中删除静态关键字,
ConfigRepository
如下所示:@Autowired 私有 ConfigRepository configRepository;
确保你的仓库接口和实体类在主
Application.java
包下或者确保你的Application.java在你的包的根目录下,这样springboot自动配置会自动占用仓库,否则使用@EnableJpaRepositories(basePackages="your.package")
.确保您尝试自动连接存储库的组件类在您使用它时实际上由 spring 管理。
new
如果您希望自动装配在您的组件类中工作,那就不要使用关键字。所以,当你想ConfigurationHandler
使用它时:@Autowire 私有 ConfigurationHandler 配置处理程序;
推荐阅读
- python - Python 3 - 数字标记网格和添加边框?
- ios - 不支持的 URL 协议 (-1)
- machine-learning - 我应该使用什么机器学习模型?
- c - 它们是否不同:转换指针类型然后获取数据并获取指针数据然后转换数据类型
- python - Tweepy 将搜索限制为单个用户
- reactjs - 使用 react-loadable 为组件设置路由
- ios - 在 viewDidLoad 中快速设置属性不起作用,但在 viewDidAppear 中有效
- javascript - Wordpress - Yoast 插件框未显示在管理页面上
- mysql - 从用户端将播放列表设为公开或私有
- r - 如何生成 50 个自由度为 50 的 10 chi^2(即 \chi 平方)分布变量的观测值?