一、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. netcore 下加密遇到的问题

    KeyedHashAlgorithm algorithm = KeyedHashAlgorithm.Create(algorithmName.ToString().ToUpper(CultureInf ...

  2. java方法体

    执行顺序: 静态代码块 mian方法 构造代码块 构造方法 静态代码块只执行一次.

  3. python入门(十二):面向对象

    1.场景:玩过游戏.主人公,进入了一个场景,有10个小怪物是一样的.有攻击力,血(100格).如果小怪物有多个数值需要管理,小怪物的血量.小怪物出现在屏幕的地点. 可以使用字典来进行记录: {&quo ...

  4. javaMail实现收发邮件(四)

    JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操作,在介绍这些类之前,我们先来了解下邮件接收API的体系结构,JavaMai API中定义了一个java.mail.Store类 ...

  5. gson 入门使用

    参考文章:https://www.cnblogs.com/majay/p/6336918.html Java 对象与 Json 之间的互相转换,用的比较多大是 Jackson 与 Gson 第一步:添 ...

  6. python标准库之operator(运算符模块)

    operator模块提供了一系列与Python自带操作一样有效的函数.例如:operator.add(x, y)和表达式x+y是等效的.那些特殊类的方法都有自己的函数名:为了方便起见,一些函数名是没有 ...

  7. vim matchit 自定义配对关键字之间的跳转

    vim因其强大的扩展性一直深受linux程序员的喜爱,最近在用vim写verilog的时候,由于一个逻辑块中的begin end较多,常常会多写或者漏掉匹配关键字,很是苦恼,于是寻找匹配关键字间跳转的 ...

  8. 20175126《Java程序设计》第六周学习总结

    # 20175126 2016-2017-2 <Java程序设计>第五周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第七章第十章, ...

  9. spring :Log4j各级别日志重复打印

    使用filter进行日志过滤 这个其实是Log4j自带的方案,也是推荐方案,不知道为什么网上的资料却很少提到这点. 把log4j.properties配置文件修改成如下: #root日志 log4j. ...

  10. Java多线程中static变量的使用

    轉:https://blog.csdn.net/yy304935305/article/details/52456771 鲁迅先生曾说过:“时间就像海绵里的水,只要愿挤,总还是有的”.不管肿(怎)么说 ...