1.什么是IOC控制反转?
控制反转其实就是把对象的实例化、初始化、销毁这些过程全都交给Spring去实现。由Spring容器去控制对象的生命周期。
2.Spring如何创建实例
(1)用构造器来实例化
Spring 中Bean工厂通过调用该对象的
无参构造函数,如果该类缺少无参构造函数,就会报错。
(2)使用静态工厂方法实例化
(3)使用实例工厂方法实例化
3.结合生活例子来谈谈SpringIOC容器
就好比以前我们要做饭,必须要会烧柴、炒菜、下调味料,现在我们用智能电饭锅,只需要放入材料,按下开关就会自动帮我们做好,我们只需要会拿出来吃就可以了。
一般步骤如下:
传统方法
1、HelloWorld.java
public class HelloWorld{
public void say(){
System.out.println("hello");
}
}
public static void main(String[]args){
HelloWorld hw = new HelloWorld();
hw.say();
}
2、java--->class javac.exe
3、把class文件放入到java虚拟机中
4、得到运行结果
spring容器
1、写一个类 HelloWorld
2、把HelloWorld这个类放入到容器中
以配置文件的形式把类放入到容器中
3、启动spring容器
4、利用spring的API把helloWorld这个对象拿出来
5、helloWorld.say()完成方法的调用
说明:创建helloWorld这个类是由spring容器来完成的
4.Spring容器默认情况下什么时候创建对象?如果该对象中有大量属性特别是集合,过早加载,会增加内存负荷,如果解决?延迟加载的优缺点?
(1)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/application.xml");
Spring 容器默认启动的时候,就已经将配置文件中的所有Bean实例化了。
(2)Spring给我们提供了懒加载方式,lazy-init="ture"表示该类启用懒加载方式,这样可以在改对象真正被使用时,才进行实例化:
<bean id="helloWorld" class="cn.com.hsbc.domin.HelloWorld" lazy-init="ture"></bean>
<alias name="helloWorld" alias="傻子"/>
@Test
public void test(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/application.xml");
HelloWorld hw = (HelloWorld) applicationContext.getBean("傻子");//启用懒加载后,此时才真正实例化对象
hw.sayHi();
}
(3)
优点:lazy-init="ture"延迟加载对象可以使属性多的类减少内存消耗,用到的时候才加载
缺点 :如果配置文件写错了,会导致启动服务器的时候发现不了错误,直到调用的时候才报错
应该根据实际情况来对某些消耗大的类采取懒加载方式,但不是所有类。lazy-init="false"有利于过早发现错误
5.Spring Bean工厂创建实例默认是单例模式还是多里模式?
默认是单例,scope="singleton"。可以根据需求去自定义配置,scope属性决定bean的范围
<bean id="helloWorld" class="cn.com.hsbc.domin.HelloWorld" lazy-init="false" scope="prototype"></bean>
,scope="singleton"要注意并发问题,导致属性全局共用,例如WEB开发中购物车肯定不能用单例,会导致全部用户共用一个购物车
6.IOC总结
springIOC:
* spring容器中的bean创建
* 三种方案 面试题
* 利用默认的构造函数
* 利用静态工厂方法
* 利用实例工厂方法
* 创建对象的时机
* 默认情况下,在spring启动的时候,创建纳入spring容器中所有的bean
在spring容器启动的时候,可以检查错误
但是如果bean的属性中有数据,会过早的加载到内存中,所以如果bean中有数据
应该把数据的对象的声明放在方法中
* 如果在spring的配置文件中,有lazy-init为true,则context.getBean("beanId")时
才要创建对象
缺点:在spring容器启动的时候,是检验不出错误的
* 对象的作用域
* 在配置文件中,scope为
"singleton"
* 默认值
* spring产生的bean只有一个实例
* 处于单例模式的bean的创建、初始化、销毁都是受spring容器管理的
* 在容器关闭的时候执行销毁工作
"prototype"
* 多例
* spring容器负责该bean的创建、初始化,但是销毁工作程序员做
* 无论该bean的lazy-init为什么值,都在context.getBean时创建对象(因为这个时候Spring容器根本不知道你将要创建多少个对象,所以它干脆等你调用再创建)
* 如果该bean中有资源对象,手动关闭
* init和destroy方法
init在构造器执行完毕之后执行
destroy方法在spring关闭的时候执行
分享到:
相关推荐
通过学习和实践这个"JavaEE spring IoC入门案例",你将能够理解并掌握如何在Spring框架下实现IoC,从而提高你的JavaEE开发能力。深入理解和运用这些知识点,可以让你在实际项目中编写出更加健壮、易维护的代码。
1. 创建一个Spring配置文件(如`bean.xml`),在其中定义bean。 2. 加载配置文件,创建Spring应用上下文(ApplicationContext)。 3. 通过ApplicationContext的`getBean`方法获取bean,并进行操作。 在`ClientTest`...
依赖注入:Dependency Injection IOC的作用:降低程序间的偶合(依赖关系) 依赖关系的管理:以后都交给spring来维护 ... ref:用于指定其他bean类型数据,它所指的是在spring的IOC容器中出现的bean
总的来说,学习"JavaEE Spring IoC入门"意味着你需要理解Spring如何通过IoC管理对象,掌握XML配置文件的编写,以及如何在Web环境中使用Spring MVC进行开发。此外,还需要了解如何编写测试用例来验证Spring配置的有效...
spring_ioc快速入门
Spring入门级教程,从零开始教你认识Spring,了解Spring,理解Spring的两大核心IoC和AOP,教你如何使用Spring进行开发
**Spring之IoC入门实例详解** 在Java世界中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)能力而广受赞誉。IoC是一种设计模式,它将对象的创建和...
本文将深入探讨Spring的核心概念——依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC),并结合提供的"Spring项目IOC入门案例、Spring项目DI入门案例的代码"进行详细解析。...
在本例“Spring Ioc(依赖注入)入门例子--属性注入”中,我们将关注如何通过属性注入来管理依赖。 属性注入是指Spring容器将一个对象的属性值设置为另一个对象的引用。这通常用于将服务对象注入到需要使用它们的...
Spring中IoC的入门实例详解.doc
《Spring入门:Spring概述与Spring IoC》是针对初学者的一篇教程,旨在引导开发者进入Spring框架的世界。本文将深入探讨Spring的核心概念,特别是Spring的Inversion of Control(IoC,控制反转)特性,以及如何在...
什么是spring,spring核心,spring优点,spring体系结构, 入门案例,DI基础,核心API,文档内附代码
1. **控制反转(IOC)**:IOC是一种设计思想,它改变了传统应用程序的控制流程。在传统的Java应用程序中,开发者通常需要自行管理对象的创建和依赖关系。而在IOC中,这个责任被转移到了一个外部容器(即Spring的IOC...
这本书籍“一本很不错的关于spring入门的书籍”显然是针对初学者设计的,旨在帮助新手快速掌握Spring的基本概念和核心功能。 Spring框架的核心特性包括: 1. **依赖注入(Dependency Injection,简称DI)**:这是...
《Spring入门代码项目详解》 在IT行业中,Spring框架无疑是最受欢迎的Java企业级应用开发框架之一。本项目旨在帮助初学者快速入门Spring,通过实际的代码操作来理解和掌握Spring的核心概念与用法。以下是对每个子...
《Spring入门经典》是一本由Mert Caliskan和Kenan Sevindik共同撰写的书籍,主要面向希望深入理解并掌握Spring框架的初学者。Spring是Java领域中最为广泛使用的开源框架,它提供了一个全面的编程和配置模型,旨在...
《Spring入门基础详解》 Spring框架作为Java领域中极为重要的轻量级容器,以其强大的功能和易用性深受开发者喜爱。本教程将带你逐步走进Spring的世界,了解其核心概念,并教你如何在Eclipse环境中搭建Spring开发...
Spring框架是Java开发中...本教程的文档《Spring入门教程.doc》将深入讲解这些概念,并提供实例代码和步骤说明,帮助你从零开始学习Spring,逐步成长为一名熟练的Spring开发者。请打开文档,开始你的Spring学习之旅吧!
一个机遇Spring3的入门小案例,里面主要简单演示了Spirng配置文件如何配置自动扫描包,控制类、服务类、Dao类如何加注解,被IOC扫描装入容器中。还有AOP例子的演示,有before after afterreturn afterthrow,还有...