当前位置: 首页 > 知识库问答 >
问题:

Spring引导中的注释@autowmed

王宜
2023-03-14

我编写基本java已经有一段时间了,现在正在体验Spring Boot。

在Spring引导中经常看到注释。

对我来说,注释是为了节省开发人员实现更少代码的时间,顾名思义是在线的。但这并不能满足我下面的问题

到目前为止,我正在经历@autowed。让我困惑的是@autowmed启用依赖注入并告诉bean配置xml(我还不明白它有多有用)

例如,

class A {

    private int id;

    // With setter and getter method
}

class B {

    private String name;

    @Autowired 
    A a;
    
B(A a){this.a = a} ;
    
    }
}

然而,在基本的java中,它不允许将实例作为参数传递,而不需要@autowmed吗?为什么这突然变成了一种福利?或者我错过了什么?

class A {

    private int id;

    // With setter and getter method
}

class B {

    private String name;

    A a;
B(A a){this.a = a} ;
    }
}

共有1个答案

甄越
2023-03-14

当您这样做时,您会得到好处(尽管不建议这样做)

@Component
class A {

    private int id;

    // With setter and getter method
}

@Component
class B {

    private String name;

    @Autowired 
    A a;
    
    B() {
    
    }
       
}

现在,假设这些类位于@SpringBootApplication注释类的同一个或子包中,将为您自动配置,并使用Spring框架的反射将a注入B。

但是,正如我提到的,这是不推荐的,你可能想通过构造函数注入它,因为这使得你的组件更容易测试(你可以很容易地注入一个模拟代替)。请注意,当您有一个带有带参数的构造函数的组件/bean时,自动生成是推断的,Spring将尝试找到要为您注入其中的bean。

@Component
class A {

    private int id;

    // With setter and getter method
}

@Component
class B {

    private String name;

    final A a;

    B(A a) {
        this.a = a;
    }

}
 类似资料:
  • 我在使用@mockbean注释时遇到了麻烦。文档说MockBean可以替换上下文中的bean,但我在单元测试中得到了一个NoUniqueBeanDefinitionException。我看不出如何使用注释。如果我可以模拟回购,那么显然会有不止一个bean定义。 错误消息:

  • 我完全遵循这条线索。您可以看到这两种异步方法具有几乎相同的结构。异步方法调用事务性方法。但是第二个抛出。 我甚至模仿第一个异步方法结构来修改第二个: 这一次,它给出了。 我想知道我的代码中的缺失点,任何帮助都将不胜感激。

  • 是否可以声明性地在类的字段上指定验证约束,以便其中一些约束只适用于某些层(或者被某些层忽略)? 其中是JSR 303 anotation REST API层 此处不存在 null

  • 这篇文章是applicationcontext.xml中bean声明的连续性 我有一个使用Spring3和Hibernate4以及JSF2的小应用程序,当我运行我得到的应用程序时。 ManagedBean: 并且我有注入注释: 在EmployeeService中,我有如下注释: 更新2 ApplicationContext.xml:

  • 我们在应用程序中定义了属性。属性,将该属性拉入一个springboot@Configuration注释类以用于初始化正在创建的bean是否合适。请参阅下面的代码片段 最简单的例子是创建一个在应用程序中配置了url、驱动程序、用户名和密码的数据源实例。性质 是否恰当?继续以这种方式使用可能产生什么后果?

  • 我已经制作了几个应用程序,它们使用了纯注释Spring配置。现在,我想试着建一个图书馆。 < li >库应该使用纯注释Spring配置。 < li >使用该库的项目应该能够在没有任何特殊Spring配置的情况下使用该库。事实上,我希望这个库可以与Spring和非Spring项目互换使用。所有的Spring配置都应该在库jar中处理。 < li >该库应该可用于非web应用程序的项目。 < li >