IOC/DI实现步骤
1.配置元数据
2.实例化IOC
3.获取Bean
基于XML配置方式
管理组件
1.基于构造函数:有参、无参
2.基于静态工厂方法:有参、无参
依赖注入
1.构造函数
2.setter方法
Bean组件高级特性
1.作用域
2.生命周期
FactoryBean
基于注解
IOC
Bean作用域与生命周期注解
DI自动组装(引用类型)
@Resource @Resource
基本类型DI @Value注解
基于配置类方式
XML与配置类:
@Bean注解细节
Bean之间依赖
//注解类
@Configuration
@ComponentScan(basePackages = "com.atguigu")
@PropertySource("classpath:jdbc.properties")
public class JavaConfig {
@Value("${atguigu.url}")
private String url;
@Value("${atguigu.driver}")
private String driver;
@Value("${atguigu.username}")
private String username;
@Value("${atguigu.password}")
private String password;
@Bean(destroyMethod = "close")
public DruidDataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driver);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource){
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
}
//XML
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置数据源 -->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="${atguigu.url}"/>
<property name="driverClassName" value="${atguigu.driver}"/>
<property name="username" value="${atguigu.username}"/>
<property name="password" value="${atguigu.password}"/>
</bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="druidDataSource" />
</bean>
<!-- 扫描Ioc/DI注解 -->
<context:component-scan base-package="com.atguigu.dao,com.atguigu.service,com.atguigu.controller" />
</beans>
三种配置方式总结