一、IOC、DI基本概念

IoC(Inversion of Control)控制反转指的是把对象的创建,初始化,销毁等工作交给容器来做。由容器控制对象的生命周期(传统方式中是由我们程序员主动创建对象、初始化、销毁。将这系列的操作交给容器的过程即为反转)。IOC更多的描述了对象本身,而没有涉及到对象与对象之间依赖关系的处理,于是后续有了依赖注入的概念。依赖注入指的是组件之间依赖关系由容器在运行期决定。程序运行中,组件依赖的其他资源将会由容器动态注入到组件中。现如今我们提到IOC和DI时,大部分场景下都指的是同一个东西。IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序

二、Spring容器创建Bean对象的方式

1、默认调用类的无参构造函数创建对象

2、利用静态工厂方法创建对象

3、利用实例工厂方法创建对象

依赖注入方式(给属性赋值)

1、调用类的构造器注入

2、调用类的setter方法注入

三、Spring容器创建对象的时机

1、默认情况下,Spring容器启动的时候(例如:ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"))会调用类的无参数构造函数创建对象。

2、当注册bean对象的时候,指定了lazy-init="true"属性的时候,在获取对象的时候(例如:调用getBean方法)初始化对象。lazy-init属性值为default、false都为延迟初始化。

四、Spring容器中Bean的作用域

五、Spring容器中Bean的生命周期

六、Spring中配置Bean的几种方式

1、基于xml的配置

<bean id="user" class="com.demo.mvc.model.User" />

2、基于注解的配置

@Controller
@RequestMapping("/Hello")
public class HelloController {
@RequestMapping("/index")
@ResponseBody
public String index() {
return "Hello,index!";
}
}

几种常用的注册bean的注解:

@Component:标注一个普通的Spring Bean类(不好归类为以下三种时,常使用该注解)

@Controller:标注一个控制器类

@Service:标注一个业务逻辑类

@Repository:标注一个DAO类

3、基于Java类配置

@Configuration
public class ApplicationConfig {
@Bean("user")
public User getUser(){
return new User();
}
}

使用@Configuration注解配置ApplicationConfig类为一个Spring配置类,使用@Bean注解向Spring容器中注册Bean对象。

参考博文:http://www.cnblogs.com/zrtqsk/p/3735273.html

浅谈Spring中的IOC容器的更多相关文章

  1. 浅谈Spring中的Quartz配置

    浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...

  2. 浅谈Spring中JDK动态代理与CGLIB动态代理

    前言Spring是Java程序员基本不可能绕开的一个框架,它的核心思想是IOC(控制反转)和AOP(面向切面编程).在Spring中这两个核心思想都是基于设计模式实现的,IOC思想的实现基于工厂模式, ...

  3. 浅谈spring中AOP以及spring中AOP的注解方式

    AOP(Aspect Oriented Programming):AOP的专业术语是"面向切面编程" 什么是面向切面编程,我的理解就是:在不修改源代码的情况下增强功能.好了,下面在 ...

  4. Spring中的IOC容器(学习笔记)

    如何将Bean配置到Spring的Bean容器中 通过xml配置文件: Bean实现类来自第三方类库:如“DataSource”等      需要命名空间配置如:context,aop,mvc等   ...

  5. 浅谈Spring中的事务回滚

        使用Spring管理事务过程中,碰到过一些坑,因此也稍微总结一下,方便后续查阅. 1.代码中事务控制的3种方式 编程式事务:就是直接在代码里手动开启事务,手动提交,手动回滚.优点就是可以灵活控 ...

  6. 理解Spring中的IoC和DI

    什么是IoC和DI IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度.其基本思想是:借助于"第三方" ...

  7. 浅谈Spring的两种配置容器

    浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41   作者:黄小鱼ZZZ     ...

  8. Spring——Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)

    基于Spring-4.3.7.RELEASE Spring的配置不仅仅局限在XML文件,同样也可以使用Java代码来配置.在这里我使用XML配置文件的方式来粗略地讲讲WebApplicationCon ...

  9. Spring学习(四)在Web项目中实例化IOC容器

    1.前言 前面我们讲到Spring在普通JAVA项目中的一些使用.本文将介绍在普通的Web项目中如何实例化Spring IOC容器.按照一般的思路.如果在Web中实例化Ioc容器.这不得获取Conte ...

随机推荐

  1. 有关于并发中的死锁(Deadlock)、饥饿(Starvation)、活锁(Livelock)

    最近在看<实战Java高并发程序设计>,发现了之前没有接触过的几个名词. 死锁:之前在接触多线程的时候,接触过死锁的情况.死锁是线程中最糟糕的情况,如下面的图中的四辆车子一样,如果没有一辆 ...

  2. wkhtmltopdf 转pdf时元素被页面切割开

    1. <style> * { page-break-inside: avoid; page-break-after: avoid; page-break-before: avoid; } ...

  3. com.android.support:design

    Error:Could not find com.android.support:design:27.3.1.Required by: project :app Please install the ...

  4. oslo_db使用

    oslo_db是openstak中封装数据库访问sqlachmy的模块,网上搜索的资源并不多,除了openstack官方文档,在实际使用中的例子凤毛麟角. 有感于资源太少,在学习heat源码的过程中, ...

  5. C#移动及改变控件大小

    //代码比较简单,就不多解析了. #region 移动窗体保存数据 Point mouseOff;//鼠标移动位置变量 bool leftFlag; //标志是否为左键 bool largeFlag; ...

  6. vim字符查找和替换

    一.替换 1. r+<待替换的字母>    将光标处的字母替换为指定的字母 2.R       连续替换直到按下ESC 3.cc      整行替换,并进入插入模式 4.cw     替换 ...

  7. String主要方法

    No 方法名称 类型 描述 1 (字符数组)public String(char[] value) 构造 将字符数组变为字符串(Sring类对象) 2 public String(char[] val ...

  8. Java中的equals和hashCode方法详解

    Java中的equals和hashCode方法详解  转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...

  9. 18. 4Sum (JAVA)

    Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...

  10. MySQL主主

    MySQL双主(主主)架构方案   在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果 ...