我有一个spring-boot项目。我正在以“春季”方式使用某些类,这意味着它们由“ @Service”,“ @ Repository”,“ @ Autowired”进行注释。同时,我有很多类,这些类仅以普通的Java方式使用,这意味着没有任何Spring注释,并且它们是以在构造函数中构造对象的标准方式创建的。
例如,未注释的类之一是:
public class GenericTree<T>
{
private GenericTreeNode<T> root;
public GenericTree ()
{
root = null;
}
public GenericTreeNode<T> getRoot ()
{
return this.root;
}
public void setRoot (GenericTreeNode<T> root)
{
this.root = root;
}
...
}
混合使用带有或不带有Spring注释的类是否正常?大概,我可以使用Spring的注释标记将所有非注释类转换为注释类。这真的有益还是有必要?
顺便说一句,我的应用程序的主要逻辑和功能不是以Web为中心的,尽管它们是作为Spring项目创建的。我在Spring中创建的原因是我想为我的界面提供一个Restful服务,以便我可以轻松地在开发中的浏览器中进行测试,其他人可以将其与Restful服务一起使用。
答案 0 :(得分:1)
是的,可以。
请记住,注释不是Spring专有的。注释是Java 5中引入的,它们只是Java代码的元数据。此元数据可用于:
您甚至可以创建自己的自定义注释,并使用它们注释代码。
Spring框架带有一些注释,每个注释都有其用途,但这并不意味着您在使用此框架时必须使用Spring注释对所有类进行注释。
当您将类注释为Spring Bean时,它们将成为Spring Application Context的一部分,从而使它们可通过@Autowired注释进行注入(Spring框架基于依赖项注入设计模式)。但是Spring注释也具有其他含义,我无法详细介绍每个注释的细节,但是例如,您必须考虑到@ Bean,@ Component,@ Controller,@ Repository,@ Service等注释的默认范围是Singleton 。因此,每当您使用这些注释之一对一个类进行注释而没有定义范围时,您将获得的是在应用程序中共享的单例类。其他范围是:
考虑到您的GenericTree
类,将抽象数据结构类注释为Spring Bean是否有意义?可能不是。
是的,当您基于Spring框架开发应用程序时,通常的事情是混合使用Spring注释类和常规POJO。
我建议您阅读Spring框架文档,了解什么是依赖注入,以及最常用的Spring注释的用途和含义。