Spring IOC

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。
简单来说,Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。

IOC 解决了类与类之间的依赖关系。程序员将控制类与类之间依赖的权利交给了IOC,IOC 的原理很简单,底层就是java的反射。利用set方法对实例的依赖进行注入。

xml方式注入bean 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="person" class="cn.qin.entity.Person">
        <property name="name" value="qq"/>
        <property name="age" value="1"/>
    </bean>
</beans>

获取bean 

 public static void main(String[] args) {
        ApplicationContext app =new ClassPathXmlApplicationContext("beans.xml");
        Person person=(Person)app.getBean("person");
        System.out.println(person);

    }

注解的方式注入bean  ,创建一个配置类Config,给容器注册一个类 返回Person类型

@Configuration
public class Config {
    @Bean("person1") //设置bean的id 不设置默认使用方法名
    public Person person(){
        return new Person("qlr",26);
    }
}

获取bean

AnnotationConfigApplicationContext app = new AnnotationConfigApplicationContext(Config.class); 
Person person
=(Person)app.getBean("person1");

打印 bean 的id

   String[] names=app.getBeanDefinitionNames();
        for (String name : names){
            System.out.println(name);
        }
原文地址:https://www.cnblogs.com/qin1993/p/11660990.html