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