一、Spring IOC容器
1、容器主要功能(BeanFactory容器)
- 发布Bean实例:
发布Bean到容器中。 - 获取Bean
根据名称获取实例
根据类型获取实例
获取Bean类型
获取Bean别名
容器是否包含Bean
是否是单例、多例
类型是否匹配
2、容器分类
- 基础容器:BeanFactory
- 应用容器:ApplicationContext(增加了国际化,环境可配置,事件发布,资源模式解析功能)
- web应用容器:WebApplicationContext
- 与XML相关到容器:ClassPathXmlApplicationContext
- 与注解相关容器:AnnotationConfigApplicationContext
3、装配Bean到IOC容器(Demo)
- Bean对象
@Data
public class User {
/**
* 名称
*/
private String name;
/**
* 年龄
*/
private Integer age;
}
- java配置类
@Configuration
public class AppConfig {
@Bean(name = "user")
public User initUser(){
User user = new User();
user.setName("xiaoming");
user.setAge(20);
return user;
}
}
- IOC容器
public class AppTest {
@Test
public void IocTest() {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
User user = applicationContext.getBean(User.class);
Log.info(user.getName());
}
}
二、使用Spring IOC容器装载和配置Bean(使用AnnotationConfigApplicationContext容器)
1、装载Bean到IOC容器
-
扫描包批量装配Bean
需要被Spring管理的Bean使用添加如下注解:@Component,@Service,@Controller
在java配置类中配置IOC容器要扫描那些包:@ComponentScan -
@ComponentScan,@ComponentScan(“com.alibaba.*”),@ComponentScan(basePackages={“com.ib.*”,“com.alibaba.*”})指定要扫描的包
-
@ComponentScan(basePackage={“com.ib.*”},excludeFilters{@Filter(classes={Service.class})})排除包中标有@Service注