如何使用构造函数@Autowire bean

我正在尝试定义一个bean和@Autowire org.springframework.jdbc.object.StoredProcedure,它需要2个构造函数。 有没有办法在连接这些bean时传递构造函数参数? 以下是我的代码:

@Component("procedure") public class ExecuteStoreProcedure extends AbstractImutableDAO{ @Autowired private StoredProcedure procedure; ...... } 

这里StoredProcedure有一个构造函数来传递jdbctemplate和过程名称,这是动态的。

也许我不明白这个问题,但你在布线时不需要构造函数参数,你可以在context.xml中配置你的bean(StoredProcedure)

     

Spring使用给定的构造函数args创建它,并将bean注入到字段中

 @Autowired private StoredProcedure procedure; 

如果不想使用xml,它不会改变想法

 @Configuration @PropertySource("spring.properties") @EnableTransactionManagement public class Test3 { @Autowired Environment env; @Bean public ExecuteStoreProcedure getExecuteStoreProcedure() { ... } @Bean public DataSource getDataSource() { ... } @Bean public StoredProcedure getStoredProcedure() { return new MyStoredProcedure(getDataSource(), "proc1"); } ... 

当您@Autowire一个字段时,您假设ApplicationContext中已存在所需类型的bean。 因此,为了使这些代码工作,您需要做的是声明一个这样的bean(在XML中,或者,如果您想以编程方式配置它,使用@ Bean-请参阅此处的Spring文档 )。