我有一个@Configuration注释类,它有@Bean注释方法。它们中的大多数只返回没有DI依赖项的新实例,例如:
@Bean
public UserService getUserService() {
return new InMemoryUserService();
}
但是一些bean需要构造函数注入,例如。
@Bean
public BookingService getBookingService() {
return new InMemoryBookingServiceImpl(???); // i need to inject UserService to constructor
}
我该怎么做?
只需将所需的bean作为参数传递给方法。
@Bean
public UserService getUserService() {
return new InMemoryUserService();
}
@Bean
public BookingService getBookingService(UserService userServ) {
return new InMemoryBookingServiceImpl(userServ);
}
在这里,当Spring访问getBookingService
时,它将看到它需要一个类型为UserService
的bean,并将在上下文中查找。
查看文档
所有依赖注入规则都适用。例如,如果没有找到该类型的bean,则会引发异常,或者如果找到多个该类型的bean,您必须使用@Qualifier
指定您想要的bean的名称,或使用@主
标记其中一个bean
另一种选择是直接使用生成依赖bean的方法:
@Bean
public UserService getUserService() {
return new InMemoryUserService();
}
@Bean
public BookingService getBookingService() {
return new InMemoryBookingServiceImpl(getUserService());
}
我面对的是Bean(...)没有资格被所有BeanPostProcess处理。我已经将问题缩小到@Configuration类中的@Bean方法,我认为这是罪魁祸首: 配置类 据我所知,BeanPostProcessor bean创建得相当快,需要过早地实例化MeterRegistry bean,这使得它不合格(因为BeanPostProcessor正在操作尚未注入的bean)。 我在博客上看到一
我已经玩弄了@scope注释(没有用),但我的理解是我不应该这么做。 提前感谢您提供的任何信息!:)
我在如下配置类中创建了一个bean: 在FoodConfig.java 在食品服务课程中,我需要访问食品配置。所以我自动连接了食品配置。 试图从我的FoodServiceTest类访问AbstractFoodService类中的someParam时,我得到一个Nullpointer异常。 然而,若我在AbstractFoodServiceClass的构造函数中注入FoodConfig,它就会工作。
我有一个场景,在呈现JSF页面之前,我必须调用另一个bean和注册的bean属性,因为JSF页面引用bean属性来呈现响应。 处理请求-调用后端方法以获取详细信息-如果(type==XYZ),则调用beantwo.gettypexyz()并按照为beantwo.gettypexyz()定义的导航规则重定向-否则(type==RST),则调用beanthree.gettyperst()并按照为bea
问题内容: 我有两个具有相同属性名称的java类。如何将所有属性复制到另一个装有数据的bean中。我不想使用传统形式来复制属性,因为我有很多属性。 提前致谢。 1班 2班 问题答案: 用途:
我有一个基于XML配置的spring应用程序,其中一个bean需要com.typesafe.config.config参数作为构造函数参数。为此,我们有一个@Configuration类,其中一个方法(注释为@bean)返回一个com.typeSafe.config.config对象。 但spring启动时会抱怨“未能实例化[com.typesafe.config.config]:指定的类是接口”