如何使用 spring 注释
how to use spring annotations
我有@Controller、@Service 和@Repository classes。
该应用程序运行良好,但我认为我没有正确使用“实体”和“存储库”的注释 classes.
我实际上没有使用数据库(甚至不是内存中的数据库),也不打算使用。
我目前正在使用@Repository 注释存储库,使用@Service 注释实体,这是我的顾虑:我这样做是否正确?
如果我不想持久化数据,我应该如何设计和使用 Spring 注释将实体和存储库 classes 连接到服务?
目前看起来是这样的:
服务class
@Service
public class ServiceClass{
@Autowired
RepositoryClass repositoryClass;
public ServiceClass(RepositoryClass repositoryClass) {
this.repositoryClass = repositoryClass;
}
}
存储库class
@Repository
public class RepositoryClass{
@Autowired
private Entity entity;
public DocumentRepository(Entity entity) {
this.entity = entity;
}
}
实体class
@Service
public class Entity {
private Map<String, List<Integer>> entityMap;
public Entity (Map<String, List<Integer>> entityMap) {
this.entityMap = entityMap;
}
}
您不能使用来自 data-jpa w/o 的 @Entity 设置一些数据库,因此您的实体不需要任何注释。它们不是您需要在任何地方连接的 bean。
但“当您不知道时”可能是一项服务的一般想法是一个很好的想法。 XD
其他注释正确
您基本上可以使用@Component、@Service、@Config、@Repository 对它们进行注释...这不会破坏您的代码,名称大多只是为了让处理代码的人员更清楚。
用 @Service
注释实体 class 是错误的。
注解为@Service
的class通常是无状态的,因此,这样的class.
通常只有一个对象
注解为@Entity
的class通常是有状态的,因此,这种class.
的对象通常很多
示例场景是一个简单的新闻服务:
- 有一个
NewsService
包含从存储库中获取新闻的有趣代码。
- 对于每个新闻项目,都有一个
NewsEntity
对象,保存单个新闻项目的数据。
问题是:这里每个class的作用是什么。通常存储库是访问数据的点。实体是数据对象,不是逻辑组件,所以它通常由存储库创建和管理,在这个例子中,不是 Spring.
仅使用该代码很难确定任何内容(没有关于每个组件如何使用的信息),但我会从实体 class 中删除 @Service
。其他 classes 可以使用这些注释。
我有@Controller、@Service 和@Repository classes。 该应用程序运行良好,但我认为我没有正确使用“实体”和“存储库”的注释 classes.
我实际上没有使用数据库(甚至不是内存中的数据库),也不打算使用。
我目前正在使用@Repository 注释存储库,使用@Service 注释实体,这是我的顾虑:我这样做是否正确?
如果我不想持久化数据,我应该如何设计和使用 Spring 注释将实体和存储库 classes 连接到服务?
目前看起来是这样的:
服务class
@Service
public class ServiceClass{
@Autowired
RepositoryClass repositoryClass;
public ServiceClass(RepositoryClass repositoryClass) {
this.repositoryClass = repositoryClass;
}
}
存储库class
@Repository
public class RepositoryClass{
@Autowired
private Entity entity;
public DocumentRepository(Entity entity) {
this.entity = entity;
}
}
实体class
@Service
public class Entity {
private Map<String, List<Integer>> entityMap;
public Entity (Map<String, List<Integer>> entityMap) {
this.entityMap = entityMap;
}
}
您不能使用来自 data-jpa w/o 的 @Entity 设置一些数据库,因此您的实体不需要任何注释。它们不是您需要在任何地方连接的 bean。
但“当您不知道时”可能是一项服务的一般想法是一个很好的想法。 XD
其他注释正确
您基本上可以使用@Component、@Service、@Config、@Repository 对它们进行注释...这不会破坏您的代码,名称大多只是为了让处理代码的人员更清楚。
用 @Service
注释实体 class 是错误的。
注解为@Service
的class通常是无状态的,因此,这样的class.
注解为@Entity
的class通常是有状态的,因此,这种class.
示例场景是一个简单的新闻服务:
- 有一个
NewsService
包含从存储库中获取新闻的有趣代码。 - 对于每个新闻项目,都有一个
NewsEntity
对象,保存单个新闻项目的数据。
问题是:这里每个class的作用是什么。通常存储库是访问数据的点。实体是数据对象,不是逻辑组件,所以它通常由存储库创建和管理,在这个例子中,不是 Spring.
仅使用该代码很难确定任何内容(没有关于每个组件如何使用的信息),但我会从实体 class 中删除 @Service
。其他 classes 可以使用这些注释。