在spring框架中使用非注释类(bean)可以吗?

在spring框架中使用非注释类(bean)可以吗?,spring,spring-boot,Spring,Spring Boot,我有一个spring boot项目。我以“spring”的方式使用它的一些类,这意味着它们由“@Service”、“@Repository”、“@Autowired”注释。同时,我有很多类,它们仅以普通Java方式使用,这意味着没有任何Spring注释,它们是以在构造函数中构造对象的标准方式创建的 例如,其中一个非注释类是: public class GenericTree<T> { private GenericTreeNode<T> root; pu

我有一个spring boot项目。我以“spring”的方式使用它的一些类,这意味着它们由“@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;
    }
   ...
}
公共类GenericTree
{
私有GenericTreeNode根;
公共GenericTree()
{
root=null;
}
公共GenericTreeNode getRoot()
{
返回这个.root;
}
public void setRoot(GenericTreeNode root)
{
this.root=根;
}
...
}
混合使用带或不带Spring注释的类是正常的还是正常的?也许,我可以使用Spring的注释标记将所有未注释的类转换为注释类。这真的有益还是必要

顺便说一句,我的应用程序的主要逻辑和功能不是以web为中心的,尽管它们是作为Spring项目创建的。我在Spring中创建的原因是我想为我的界面提供一个restful服务,这样我可以在开发中轻松地在浏览器中进行测试,其他人可以将它与restful服务一起使用

是的,没问题

请记住,注释不是Spring独有的。注释是在Java5中引入的,它们只是Java代码的元数据。这些元数据在以下方面很有用:

  • 编译时
  • 构建时间
  • 运行时
您甚至可以创建自己的自定义注释,并使用它们对代码进行注释

Spring框架附带了一些注释,每个注释都有其用途,但这并不意味着在使用该框架时必须使用Spring注释对所有类进行注释

当您将类注释为Springbean时,它们将成为Spring应用程序上下文的一部分,从而使它们可以被@Autowired注释注入(Spring框架基于依赖注入设计模式)。但是,Spring注释也有其他含义,我不能详细讨论它们中的每一个,但例如,您必须考虑注释的默认范围,例如@ bean、@组件、@ Controller、@ RealStand、@ Service是Singleton。因此,每当您使用这些注释中的一个注释对一个类进行注释,而您没有定义范围时,您得到的是一个在整个应用程序中共享的单例类。其他范围包括:

  • 独生子女
  • 原型
  • 请求
  • 会议
  • 应用
  • 网袋
考虑到您的
GenericTree
类,将抽象数据结构类注释为Springbean有意义吗?可能不会

因此,是的,当您开发基于Spring框架的应用程序时,通常的做法是混合使用Spring注释类和常规POJO

我建议您阅读Spring框架文档,了解依赖注入是什么,以及最常用的Spring注释的目的和含义