IoC简介
- IoC即(Inversion of Control),一般译为控制反转。一个java应用程序,对象间往往是相互依赖的。控制反转就是为了解决这个问题。
IoC理解
- IoC是把对象的控制权较给框架或容器,容器中存储了众多我们需要的对象,然后我们就无需再手动的在代码中创建对象。需要什么对象就直接告诉容器我们需要什么对象,容器会把对象根据一定的方式注入到我们的代码中。注入的过程被称为DI即(Dependency Injection),译为依赖注入。有时候需要动态的指定我们需要什么对象,这个时候要让容器在众多对象中去寻找,容器寻找需要对象的过程,称为DL即(Dependency Lookup),译为依赖查找。
IoC使用
- 在Spring中使用IoC,首先引入jar包:spring-core、spring-beans;其次,需要将对象注册给容器,可以使用XML或注解将对象注册到容器中,这样,管理对象的职责就交给了容器;需要使用某对象,将容器中注册过的对象注入到创建的对象上即可,就像赋值,new对象一样,可以使用XML或者注解注入获取对象。这就是控制反转,将对象创建,管理,销毁等责任交给了Spring容器;依赖注入,当我们需要对象时,从容器中获取出来,注入到对象中即可。
- 在Spring 中,所有的类均可注册到容器中,类只有注册到容器中才可被容器所识别为bean,才可为容器所识别管理。就像我们将钱存入支付宝一样,钱只有存入支付宝才可为支付宝所管理,需要的时候,去支付宝取就行了,我们需要什么钱,多少钱,说明清楚,最后由支付宝付给我们。
- 将对象注册到容器,为了简单,我们以注解为例:
- @Component 主要使用在类上,此类将被注册到容器中;
- @Bean 主要使用在方法上,方法返回的类将被注册到容器中;
- @Repository 使用在dao类上,我们可以明显看出这是数据访问层的bean,此类将被注册到容器中;
- @Service 使用在service类上,我们可以明显看出这是业务逻辑层的bean,此类将被注册到容器中;
- @Controller 使用在controller类上,我们可以明显看出这是控制层的bean,此类将被注册到容器中;
- 总结:@Component和@Bean更加通用,@Repository和@Service和@Controller职责作用更加明确,便于区分层次。
- 将容器中的bean注入到类上,以注解为例:
- @Autowired 按类型查找注入
- @Resource 按类名查找注入
未完待续…