@Bean修饰的方法参数的注入方式:
方法参数默认注入方式为Autowired,即先根据类型匹配,若有多个在根据名称进行匹配。
1:复杂类型可以通过@Qualifier(value=“XXX”)限定;
2:对于普通类型使用@Value(XXX)指定;
@PropertySource("classpath:db.properties")
public class SpringConfiguration {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
/**
* 方法参数默认注入方式为Autowired: <br>
* 1:复杂类型可以通过@Qualifier(value="dataSource")限定; <br>
* 2:对于普通类型使用@Value指定; <br>
*/
@Bean(name = "dataSource")
public DataSource dataSource(@Value("${jdbc.driverClass}") String driverClassName,
@Value("${jdbc.jdbcUrl}") String url, @Value("${jdbc.user}") String username,
@Value("${jdbc.password}") String password) {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "jdbcTemplate")
public JdbcTemplate jdbcTemplate(@Qualifier(value = "dataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
会从Spring容器中根据类型注入(若有多个类型的的话则根据方法名按名称注入,没有找到就会报错)