IoC又称为依赖注入(DI:Dependency Injection),它解决了 一个最主要的问题:将组件的创建+配置与组件的使用相分离,并且, 由IoC容器负责管理组件的生命周期
容器是一种为某种特定组件的运行提供必要支持的一个软件环境。例如, Tomcat就是一个Servlet容器,它可以为Servlet的运行提供运行环境
Spring的核心就是提供了一个IoC容器,它可以管理所有轻量级的JavaBean组件, 提供的底层服务包括组件的生命周期管理、配置和组装服务、AOP支持
@Component
public class UserService {
@Autowired
MailService mailService;
public UserService(@Autowired MailService mailService) {
this.mailService = mailService;
}
}
@Component注解相当于定义了一个Bean.
把一个Bean标记为@Component后,默认会自动为我们创建一个单例(Singleton), 即容器初始化时创建Bean,容器关闭前销毁Bean。在容器运行期间,我们调用getBean(Class) 获取到的Bean总是同一个实例。
@Autowired就相当于把指定类型的Bean注入到指定的字段中.
一般把@Autowired写在字段上,通常使用package权限的字段,便于测试
@Configuration表示是一个配置类
@ComponentScan告诉容器自动搜索当前类所在的包及子包,把所有标注为 @Component的Bean自动创建出来,并根据@Autowired进行装配
使用Spring容器时,我们也可以把“文件”注入进来,方便程序读取,Resource