IoC (Inversion of control 控制反转) 或者也可以称为 DI (Dependecy Injection 依赖注入)
    对象仅通过 构造函数参数、工厂方法的参数 或者 属性 对象实例被构造后设置的属性 或者 从工厂方法返回后再对象实例上设置的属性 来定义它们的依赖项。这个过程是Bean本身的逆过程,所以叫做控制反转。

    IoC的实现:
    org.springframework.beans , org.springframework.context
    BeanFactory 提供了管理任何对象的高级配置机制
    ApplicationContext 应用上下文 , 是BeanFactory的子接口。

    什么是bean?
    构成应用程序主体并且由Spring ioc 管理的对象称之为bean。bean是由spring ioc 实例化、组装和管理的对象。

    DI / IOC: - 依赖注入 / 控制反转
    当需要另一个实例时,传统是new 一个对象实例(调用者创建被调用这实例),Spring框架里,不再被调用者创建,而是交给Spring创建。 (控制反转)
    Spring 在创建这些实例时,会自动将调用者需要的对象实例注入给调用者,(调用者的依赖Spring自动注入,也就是自动注入被调用者的实例)。调用者通过Spring获取到了被调用者的实例。(依赖注入) - Setter方法 , 构造方法 , 注解注入
    @Resource @Autowired

    • @Resource : 默认按name注入,装配顺序:

    1.如果type和name都指定了,那么从上下文中找到唯一匹配的Bean 进行装配,找不到抛出异常
    2.如果制定了name,那么从上下文中查找名称(id)匹配的Bean进行装配,找不到则抛出异常
    3.如果指定了type,则从上下文中找到类型唯一匹配的Bean进行装配,找不到或找到多个,抛出异常。
    4.如果既没有指定name,也没有指定type,那么自动按name的方式装配,如果没有匹配,那么回退一个原始类型进行匹配,如果匹配则自动装配。

    • @Autowired 按Type自动装配
    • @Resource @Autowired 的相同和区别

    两者都可以用来装配Bean,可以写作字段上或者Setter方法上
    Autowired 是Spring注解,默认按Type装配,默认情况下要求依赖对象必须存在,如果允许null,那么需要设置required=false。如果需要使用名称装配 ,配合@Qualifier一起使用
    Resouce是J2EE注解,默认按名称装配

    依赖的解析过程