我的应用程序是springboot,我有DatabaseConfig,其中配置了多个SimpleJDBCCall bean来执行存储的proc,并且有DAO,其中使用构造函数注入bean。这是很好的工作,但这是失败的声纳,因为我有超过7个豆子。我们不能调整声纳设置,因为许多团队使用它。所以请在这里建议,下面是我的DatabaseConfig的样子
@Configuration
public class DatabaseConfig {
@Autowired
public JDBCTemplate jdbcT;
@Bean(spOne)
public SimpleJDBCCall spOne(){
return new SimpleJDBCCall(jdbcT).withSchema(x).....;
}
@Bean(spTwo)
public SimpleJDBCCall spTwo(){
return new SimpleJDBCCall(jdbcT).withSchema(x).....;
}
@Bean(spTen)
public SimpleJDBCCall spTen(){
return new SimpleJDBCCall(jdbcT).withSchema(x).....;
}}下面是我的DAO类的样子
@Repository
public class Dao{
private JDBCTemplate jdbcT;
private SimpleJDBCCall spOne; private SimpleJDBCCall spTwo; private SimpleJDBCCall spTen;
public Dao(JDBCTemplate jdbcT, SimpleJDBCCall spOne; SimpleJDBCCall spTwo; SimpleJDBCCall spTen){
this.jdbcT = jdbcT;
this.spOne = spOne;
this.spOne = spTwo; // More settings of storedProc beans.
this.spOne = spTen;
}}发布于 2021-03-23 16:55:48
可以将Map定义为构造函数参数,如下所示:
public Dao(JDBCTemplate template, Map<String, SimpleJDBCCall> jdbcCalls){
}然后Spring将将SimpleJDBCCall类型的所有bean实例添加到映射中。映射的关键是bean名(在您的示例中是"spOne“、"spTwo”等),值是bean的实例。如果你仍然可以用这个做你的使用,这可能是最简单的解决方案。
如果您没有访问代码中的特定bean,但是只是迭代所有模板来执行调用,那么一个列表而不是映射也就足够了。
https://stackoverflow.com/questions/66767512
复制相似问题