我有一个控制器,它应该创建版本的Dependend实例(当前未实现)。
@Controller
public class ReportController {
@Autowired
private ReportCompFactory reportCompFactory;
public ModelAndView getReport() {
I_Report report = reportCompFactory.getObject();
^^^^^<- no autowiring in this instance
}
...
}
工厂看起来像这样:
@Component
public class ReportCompFactory implements FactoryBean<I_Report> {
@Override
public I_Report getObject() throws BeansException {
return new ReportComp();
}
@Override
public Class<?> getObjectType() {
return I_Report.class;
}
@Override
public boolean isSingleton() {
return false;
}
}
未设置创建的实例字段(@Autowired注解)。我该怎么做,FactoryBean是正确实现的接口吗?
我希望使用不涉及xml配置的解决方案。
组件本身:
ReportComp implements I_Report {
@Autowired
private ReportDao reportDao;
^^^^^^^<- not set after creation
...
}
}
如果创建对象,Spring不会执行自动装配。这里有一些选择
prototype
-这将使工厂冗余(适用于仅在工厂中实例化的情况)ReportDao
在工厂注入,然后ReportComp
通过设置器将其设置为ApplicationContext
工厂并做ctx.getAutowireCapableBeanFactory().autowireBean(instance)
我有一个遗留产品的JAR,它包含Spring(4.3.8)托管类。我需要将它与CDI(JavaEE 7)集成。 我有一个来自遗留JAR的接口,由cdibean实现。CDIBean从CDIBeanManager请求,并从工厂方法返回。工厂方法在SpringXML中注册并按预期工作。 当遗留JAR的Spring bean依赖于实现的接口时,就会出现问题。Spring than注入CDI实现实例,并扫描
10.2.1 结构体工厂 Go 语言不支持面向对象编程语言中那样的构造子方法,但是可以很容易的在 Go 中实现 “构造子工厂”方法。为了方便通常会为类型定义一个工厂,按惯例,工厂的名字以 new 或 New 开头。假设定义了如下的 File 结构体类型: type File struct { fd int // 文件描述符 name string // 文
考虑到一个由许多实体组成的项目,我有一个服务需要知道实体的类型才能执行一个方法。我创造; 和例如; 我想创建一个工厂来返回正确的Bean(我使用的是spring boot)来使用,我定义了这个Bean: 这是可行的,但我有一个(声纳)警告说,我不应该“原始”使用作为工厂方法的返回类型。实现这一点的正确方法是什么?使用通配符是另一个警告。 目标是有一个返回正确bean的工厂。是最初的设计错了吗?
我有一个服务层,可以像这样自动连接存储库 我有了新的要求,根据商店的数量,存储库查询逻辑应该改变。我正在考虑抽象我的存储库并使用工厂模式。当前存储库是一个接口,并扩展了JpaRepository此外,它的所有函数都使用@Query注释来定义JPQL。这是一个只有一个函数的例子,但是在我的实际存储库中有几个函数 新要求指出,对于特定的 storeId,SQL 需要更改为如下所示的内容: 但是,所有剩
我是Spring的新手。我正面临Spring-Boot的问题。我正在尝试将外部配置文件中的字段自动装配到自动装配的bean中。我有以下类 应用程序。Java语言 AppConfig。Java语言 服务接口 服务1 我无法在App类的postconstruct方法中显示服务名称变量。我这样做对吗?
我已经创建了一个注释来调用Spring Boot项目中的Spring AOP方面。所有的工作都很好,直到我尝试将一个依赖项自动转化到方面:自动转化不会发生。 我在stackoverflow的各种问题中读到,这是因为方面不是Spring管理的。如果之前已经回答了这个问题,请原谅,但是我已经尝试了stackoverflow中提到的各种解决方案,包括使用@Configurable和实现Applicati