`

Spring 入门 IOC(1)

阅读更多
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入门案例

    通过学习和实践这个"JavaEE spring IoC入门案例",你将能够理解并掌握如何在Spring框架下实现IoC,从而提高你的JavaEE开发能力。深入理解和运用这些知识点,可以让你在实际项目中编写出更加健壮、易维护的代码。

    Spring中IoC的入门实例

    1. 创建一个Spring配置文件(如`bean.xml`),在其中定义bean。 2. 加载配置文件,创建Spring应用上下文(ApplicationContext)。 3. 通过ApplicationContext的`getBean`方法获取bean,并进行操作。 在`ClientTest`...

    Spring_IoC入门笔记.md

    依赖注入:Dependency Injection IOC的作用:降低程序间的偶合(依赖关系) 依赖关系的管理:以后都交给spring来维护 ... ref:用于指定其他bean类型数据,它所指的是在spring的IOC容器中出现的bean

    JavaEE Spring IoC入门

    总的来说,学习"JavaEE Spring IoC入门"意味着你需要理解Spring如何通过IoC管理对象,掌握XML配置文件的编写,以及如何在Web环境中使用Spring MVC进行开发。此外,还需要了解如何编写测试用例来验证Spring配置的有效...

    spring_ioc快速入门

    spring_ioc快速入门

    Spring入门级教程.pptx

    Spring入门级教程,从零开始教你认识Spring,了解Spring,理解Spring的两大核心IoC和AOP,教你如何使用Spring进行开发

    Spring 之IoC入门实例

    **Spring之IoC入门实例详解** 在Java世界中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)能力而广受赞誉。IoC是一种设计模式,它将对象的创建和...

    Spring项目IOC入门案例、Spring项目DI入门案例的代码

    本文将深入探讨Spring的核心概念——依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC),并结合提供的"Spring项目IOC入门案例、Spring项目DI入门案例的代码"进行详细解析。...

    Spring Ioc(依赖注入)入门例子--属性注入

    在本例“Spring Ioc(依赖注入)入门例子--属性注入”中,我们将关注如何通过属性注入来管理依赖。 属性注入是指Spring容器将一个对象的属性值设置为另一个对象的引用。这通常用于将服务对象注入到需要使用它们的...

    Spring中IoC的入门实例详解.doc

    Spring中IoC的入门实例详解.doc

    《partner4java 讲述Spring入门》之第一步:Spring概述与Spring IoC

    《Spring入门:Spring概述与Spring IoC》是针对初学者的一篇教程,旨在引导开发者进入Spring框架的世界。本文将深入探讨Spring的核心概念,特别是Spring的Inversion of Control(IoC,控制反转)特性,以及如何在...

    springIOC和DI

    什么是spring,spring核心,spring优点,spring体系结构, 入门案例,DI基础,核心API,文档内附代码

    spring核心IOC以及DI

    1. **控制反转(IOC)**:IOC是一种设计思想,它改变了传统应用程序的控制流程。在传统的Java应用程序中,开发者通常需要自行管理对象的创建和依赖关系。而在IOC中,这个责任被转移到了一个外部容器(即Spring的IOC...

    一本很不错的关于spring入门的书籍

    这本书籍“一本很不错的关于spring入门的书籍”显然是针对初学者设计的,旨在帮助新手快速掌握Spring的基本概念和核心功能。 Spring框架的核心特性包括: 1. **依赖注入(Dependency Injection,简称DI)**:这是...

    spring入门代码项目

    《Spring入门代码项目详解》 在IT行业中,Spring框架无疑是最受欢迎的Java企业级应用开发框架之一。本项目旨在帮助初学者快速入门Spring,通过实际的代码操作来理解和掌握Spring的核心概念与用法。以下是对每个子...

    《Spring入门经典》源代码

    《Spring入门经典》是一本由Mert Caliskan和Kenan Sevindik共同撰写的书籍,主要面向希望深入理解并掌握Spring框架的初学者。Spring是Java领域中最为广泛使用的开源框架,它提供了一个全面的编程和配置模型,旨在...

    spring 入门基础

    《Spring入门基础详解》 Spring框架作为Java领域中极为重要的轻量级容器,以其强大的功能和易用性深受开发者喜爱。本教程将带你逐步走进Spring的世界,了解其核心概念,并教你如何在Eclipse环境中搭建Spring开发...

    Spring入门教程.rar

    Spring框架是Java开发中...本教程的文档《Spring入门教程.doc》将深入讲解这些概念,并提供实例代码和步骤说明,帮助你从零开始学习Spring,逐步成长为一名熟练的Spring开发者。请打开文档,开始你的Spring学习之旅吧!

    Spring的AOP IOC

    一个机遇Spring3的入门小案例,里面主要简单演示了Spirng配置文件如何配置自动扫描包,控制类、服务类、Dao类如何加注解,被IOC扫描装入容器中。还有AOP例子的演示,有before after afterreturn afterthrow,还有...

Global site tag (gtag.js) - Google Analytics