Java53spring:IOC

Posted 码农编程录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java53spring:IOC相关的知识,希望对你有一定的参考价值。


1.类耦合:import,new class

jdbc template 就是spring对jdbc的封装。
在这里插入图片描述
以前没用接口,实现类如下。
在这里插入图片描述
如下层与层耦合,如果要对如上UserService.java功能升级,那么涉及的这个java文件需要重新编译打包部署安装。
在这里插入图片描述

2.接口解耦:import,new impl

所以要面向接口编程,将上面UserService.java中class改为interface,如下实现接口。
在这里插入图片描述
在这里插入图片描述
如下只要更改实现类就行(还是要改代码)。
在这里插入图片描述

3.配置文件+反射解耦:classpath

在这里插入图片描述
功能更改,改上面配置文件,将如上UserServiceImpl改成UserServiceImpl2就行,java代码不动就不需要重新编译和打包,重启服务器,重新读取配置文件就行。
在这里插入图片描述

4.单例工厂:class.forName

所有dao和service对象创建对于反射机制来说,可做出一个工具类如下,getInstance是第二行自定义的方法。
在这里插入图片描述
在这里插入图片描述
如上工厂用反射每次创建的对象都不一样,是多例的,某些情况下需要单例如下,每次创建对象都是同一个存在集合中后期调用。
在这里插入图片描述

5.ioc入门案例:容器中获取ac.getbean(" ")

在这里插入图片描述

<!--IOC相关依赖-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.0.6.RELEASE</version>
</dependency>

在这里插入图片描述
在这里插入图片描述

<?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 definitions here -->
</beans>

如下在resources文件夹下创建,代替beans.properties。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.spring的工厂结构:接口是I

在这里插入图片描述
ApplicationContext:只要一读取配置文件,默认情况下就会创建对象。
BeanFactory:什么时候使用,什么时候创建对象。
在这里插入图片描述
在这里插入图片描述

7.bean标签属性:scope=,ac=

如下applicationContext.xml,init-method(指定bean被创建时调用的方法,用来初始化),destroy-method(指定bean被销毁时调用的方法)。
在这里插入图片描述
在这里插入图片描述
如下多例属性生效。
在这里插入图片描述

8.bean标签生命周期:多例工厂对象创建出来就完事了,无法拿或管理。单例工厂放map中可管理bean

在这里插入图片描述
在这里插入图片描述
单例模式:工厂创建时就创建对象并执行init-method。工厂销毁时,bean也会被消毁,执行destory-method方法。
多例模式:从工厂中获取对象时才会执行init-method。工厂销毁时,bean不会被消毁,不会执行destory-method方法,垃圾回收机制自己回收。

9.创建对象的3种方式:getBean

在这里插入图片描述
在这里插入图片描述

10.spring的依赖注入:IOC只是对于依赖进行解耦,降低了耦合,但是我们的代码中还是存在依赖的

例如service需要dao层的对象。我们的对象创建交给了spring管理,那么对象的依赖也交给了spring管理。简单的说,spring给对象的属性设置值就叫做依赖注入
在这里插入图片描述
如下在applicationContext.xml中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上是关于Java53spring:IOC的主要内容,如果未能解决你的问题,请参考以下文章

死磕 Spring----- IOC 之从单例缓存中获取单例 bean

《Java从入门到放弃》入门篇:spring中IOC的注入姿势

Spring框架学习02——Spring IOC 详解

Spring IOC容器

Spring IoC

java spring的底层机制和原理是啥?