Spring的IOC(控制反转)和DI(依赖注入)
来源:互联网 发布:网络用语咸鱼什么意思 编辑:程序博客网 时间:2024/06/06 14:29
Spring的IOC和DI
1、概念
1)IOC和DI:控制反转和依赖注入是一种基于接口的编程,bean有IOC容器创建,在用的时候从容器中拿即可,主要是采用反射来实现的,其核心组件为BeanFactory,但实际开发中是XmlBeanFactory。
2)反射机制:在运行状态中,对于任意一个类,都可以知道这个类的属性和方法,对任意一个对象,都可以调用它的方法和属性,这种动态获取类的信息和动态调用对象方法的功能成为反射机制。
2、spring中的bean
spring如同一个大的工厂,bean如同该工厂的产品。
3、bean的装配方式
XML和注解。
4、bean的实例化方式(三种)
1)使用构造器实例化
在xml中配置,然后直接使用,不需要额外的工厂类实现。
xml配置:
<bean id="userervice" class="cn.spring.service.impl.UserServiceImpl"></bean>
使用:
(1)加载spring的配置文件
(2)通过getBean(“name”)方法获得该bean
2)静态工厂方式
条件:需要工厂类和工厂方法,且工厂为静态工厂。
XML配置:
<bean id="userervice1" class="cn.spring.service.impl.UserServiceImplFactory" factory-method="createPersonServiceBean"></bean>
使用:同上。
3)动态工厂方式
XML配置:
<!--使用实例工厂构造对象, 注: 要先实例化工厂-->
<bean id="beanFactory" class="com.fq.instance.InstanceBeanFactory"></bean>
<!-- 再通过工厂对象的实例方法,构造目标对象 -->
<bean id="instanceBean" factory-bean="beanFactory" factory-method="getInstance"> </bean>
使用:同上。
5、bean的作用域(5中)
singleton : 在容器中仅存在一个实例(单例模式)
prototype : 每次从容器中获取都返回一个新的实例,即每次调用getBean()时,都执行一次构造方法(lazy,原型模式)
request :每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境(不常用)
session : 同一个Session共享一个Bean,仅适用于WebApplicationContext环境(不常用)
<!--Spring使用scope标签来制定bean的作用域(默认为Singleton)-->
<bean id="singletonBean" class="com.fq.instance.SingletonBean" scope="singleton"/>
<bean id="prototypeBean" class="com.fq.instance.PrototypeBean" scope="prototype"/>
6、依赖注入的方式
1)setter方法注入 2)构造器注入 3)静态工厂方法注入 4)实例方法注入
7、注解配置bean
在spring的配置文件中加上自动扫描,在类上即可添加注解,采用spring管理
<context:component-scan base-package="com.spring.learn"/>
1)@Component :交由spring管理
2)@Controller :控制器,web层组件
3)@Service :业务类,业务层组件
4)@Repository :持久层组件
8、注解配置依赖注入
1) @Value
(1)简单类型:@Value("123")
(2)复杂属性((使用SpEL表达式): @Value("#{car}")
2)@Autowired
@Autowired 默认按照类型进行注入(如果容器中存在两个相同类型对象,则@Autowired无法注入)
3)@Resource
Spring支持JSR-250规范,可以使用@Resource()进行属性注入,功能和@Autowired相同
9、注解bean的生命周期
@PostConstruct:初始化
@PreDestroy:销毁
1、概念
1)IOC和DI:控制反转和依赖注入是一种基于接口的编程,bean有IOC容器创建,在用的时候从容器中拿即可,主要是采用反射来实现的,其核心组件为BeanFactory,但实际开发中是XmlBeanFactory。
2)反射机制:在运行状态中,对于任意一个类,都可以知道这个类的属性和方法,对任意一个对象,都可以调用它的方法和属性,这种动态获取类的信息和动态调用对象方法的功能成为反射机制。
2、spring中的bean
spring如同一个大的工厂,bean如同该工厂的产品。
3、bean的装配方式
XML和注解。
4、bean的实例化方式(三种)
1)使用构造器实例化
在xml中配置,然后直接使用,不需要额外的工厂类实现。
xml配置:
<bean id="userervice" class="cn.spring.service.impl.UserServiceImpl"></bean>
使用:
(1)加载spring的配置文件
(2)通过getBean(“name”)方法获得该bean
2)静态工厂方式
条件:需要工厂类和工厂方法,且工厂为静态工厂。
XML配置:
<bean id="userervice1" class="cn.spring.service.impl.UserServiceImplFactory" factory-method="createPersonServiceBean"></bean>
使用:同上。
3)动态工厂方式
XML配置:
<!--使用实例工厂构造对象, 注: 要先实例化工厂-->
<bean id="beanFactory" class="com.fq.instance.InstanceBeanFactory"></bean>
<!-- 再通过工厂对象的实例方法,构造目标对象 -->
<bean id="instanceBean" factory-bean="beanFactory" factory-method="getInstance"> </bean>
使用:同上。
5、bean的作用域(5中)
singleton : 在容器中仅存在一个实例(单例模式)
prototype : 每次从容器中获取都返回一个新的实例,即每次调用getBean()时,都执行一次构造方法(lazy,原型模式)
request :每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境(不常用)
session : 同一个Session共享一个Bean,仅适用于WebApplicationContext环境(不常用)
globalSession: 一般用于Porlet应用环境,该作用域仅适用于WebApplicationContext环境(不常用)
<!--Spring使用scope标签来制定bean的作用域(默认为Singleton)-->
<bean id="singletonBean" class="com.fq.instance.SingletonBean" scope="singleton"/>
<bean id="prototypeBean" class="com.fq.instance.PrototypeBean" scope="prototype"/>
6、依赖注入的方式
1)setter方法注入 2)构造器注入 3)静态工厂方法注入 4)实例方法注入
7、注解配置bean
在spring的配置文件中加上自动扫描,在类上即可添加注解,采用spring管理
<context:component-scan base-package="com.spring.learn"/>
1)@Component :交由spring管理
2)@Controller :控制器,web层组件
3)@Service :业务类,业务层组件
4)@Repository :持久层组件
8、注解配置依赖注入
1) @Value
(1)简单类型:@Value("123")
(2)复杂属性((使用SpEL表达式): @Value("#{car}")
2)@Autowired
@Autowired 默认按照类型进行注入(如果容器中存在两个相同类型对象,则@Autowired无法注入)
3)@Resource
Spring支持JSR-250规范,可以使用@Resource()进行属性注入,功能和@Autowired相同
9、注解bean的生命周期
@PostConstruct:初始化
@PreDestroy:销毁
阅读全文
0 0
- Spring IOC(控制反转)和DI(依赖注入)
- ioc(控制的反转) 和di(依赖注入)
- spring的IoC(控制反转)和DI(依赖注入)
- Spring的控制反转(IoC)和依赖注入(DI)
- Spring的依赖注入(DI)和控制反转(IOC)
- Spring容器的控制反转(IOC)和依赖注入(DI)
- Spring IoC(控制反转)和DI(依赖注入)的理解
- Spring IoC(控制反转)和DI(依赖注入)的理解
- Spring 使用注解的方式实现IOC和DI(控制反转和依赖注入)
- spring DI(依赖注入)和IOC(控制反转)的区别
- Spring的控制反转(IOC)和依赖注入(DI)详解
- Spring的IOC(控制反转)和 DI(依赖注入)机制
- Spring的Ioc(控制反转)和DI(依赖注入)
- spring框架的控制反转(IoC)和注入依赖(DI)
- Spring的IOC(控制反转)和DI(依赖注入)
- 利用反射简单模拟Spring的控制反转(Ioc)和依赖注入(DI)
- Spring-IOC(控制反转)+DI(依赖注入)
- Spring 控制反转(IOC)与依赖注入(DI)
- Spring4装配bean和依赖注入
- Three sum解题心得
- Pytorch入门学习(九)---detach()的作用(从GAN代码分析)
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- 实例化
- Spring的IOC(控制反转)和DI(依赖注入)
- 装饰器之星星点灯
- csdn博客中正则表达式存在 \[ 排版会错乱的解决方法
- 用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿
- 28.ldconfig
- 面向对象基础
- 清除浮动的几种方法
- nodejs安装与小例(linux)
- 代码出错了 删掉对应的行 就正常了 !不知道什么问题???