java - 如何在 Spring 中创建一个通过动态生成 Autowiring 的通用字段?

标签 java spring spring-boot

我用泛型定义了一些接口(interface),并且我在 Spring 上下文中注入(inject)了一些类作为 Bean,我可以动态创建一个管理器 bean 来管理它们,并且可以在没有该管理器的任何 Bean def 代码的情况下在字段中 Autowiring 它吗?

我尝试过FactoryBean方式来实现它,但没有成功,它无法传输通用类信息,并且FactoryBean bean无法传输任何可更改的参数。

我尝试过 BeanFactory 方式来实现它,当我 getBeansOfType 时,这些对象在没有 Autowiring 的情况下创建,不起作用......

现在我有一个finally方法,我认为它不是很聪明,它使用ImportBeanDefinitionRegistrar和ClassPathBeanDefinitionScanner扫描所有类,然后插入管理器的beanDefinition。

如果您提供任何方法,我将不胜感激,非常感谢!

我想这样实现:

public interface Strategy<E extends BaseEnum>
{
    public E getType();
}

public interface LoginStrategy extends Strategy<LoginType>
{
    public LoginStrategy getType();
}

@Strategy
public class ALoginStrategy implements LoginStrategy 
{
    public getType()
    {
         return LoginType.OTP;
    }
}

@Strategy
public class BLoginStrategy implements LoginStrategy 
{
    @Autowired
    private UserMapper;

    public getType()
    {
         return LoginType.PASSWORD;
    }
}

public LoginServiceImpl implements LoginService
{
    @Autowired
    private StrategyManage<LoginType, LoginStrategy> strategyManager;
}

我希望LoginServiceImpl中标记为Autowired的strategyManager可以自动生成。

我还有一个问题。可能更容易解释我想要什么。

我有一个模型转换器实现了 ModelConvertor 接口(interface),TL 是 lowerModel 的类,TU 是 upperModel 的类。

现在有一个 bean include 代码如下:


@Autowired
private ModelConvertor<UserPO, UserDO> userConvertor;

通常 Spring 框架会抛出一个异常,并显示“no such bean”消息,所以我想让这个字段可以自动注入(inject)这样的值:

@Autowired
private ModelConvertor<UserPO, UserDO> userConvertor[ = new DefaultModelConvertor(UserPO.class, UserDO.class)]; 

我该如何解决这些问题,再次非常感谢!

最佳答案

我已经解决了这个问题,扫描特定的包并动态生成bean以放在上下文中。

关于java - 如何在 Spring 中创建一个通过动态生成 Autowiring 的通用字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55610366/

相关文章:

java - 共享主键但想要单独管理/保存实体?

如果 spring.mail.host 不在 application.properties 中,则 JavaMailSenderImpl Autowiring 错误

java - 如何获取 HTML 中所有脚本的内容

java - spring hibernate对内存消耗的影响比纯jsp/servlet多少?

java - 使用 java mail api 读取 .msg 文件 ..pls 建议我

java - 尝试使用 Java 代理运行 WebGoat 时崩溃

java - 添加 'Authorization' header 会导致 Spring Security 保护允许的端点

java - 连续向前和向后推进索引,无循环

spring - Autowiring 参数作为bean声明参数

java - 使用 Spring Boot : Could not resolve placeholder 进行 Maven 资源过滤