簡體   English   中英

如何在Spring中創建與動態生成自動關聯的通用字段?

[英]How can I make a field which is generic field autowired with dynamic generate in Spring?

我定義了一些具有泛型的接口,並且在Spring上下文中將一些類作為Bean注入,可以動態創建一個管理器Bean來管理它們,並且可以在沒有該管理器任何Bean def代碼的情況下自動連接到字段中嗎?

我嘗試了FactoryBean方式來實現它,但是沒有用,它無法傳輸泛型類信息,並且FactoryBean bean無法傳輸任何可更改的參數。

我嘗試了BeanFactory的方式來實現它,當我獲得getBeansOfType時,這些沒有自動裝配的對象無法正常工作。

現在,我有了一個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中標為“自動裝配”的strategyManager。

我還有另一個問題。 解釋我想要的內容可能會更容易。

我有一個實現ModelConvertor接口的模型轉換器,TL是LowerModel的類,TU是upperModel的類。

現在有一個像這樣的bean包含代碼:


@Autowired
private ModelConvertor<UserPO, UserDO> userConvertor;

通常,Spring框架會拋出帶有“ no such bean”消息的Exception,因此我想使此字段可以自動注入一個像這樣的值:

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

我該如何解決這些問題,非常感謝!

我已經解決了這個問題,掃描特定的程序包並動態生成放置在上下文中的bean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM