如何使用构造函数@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文档 )。