zoukankan      html  css  js  c++  java
  • 浅谈Spring中的IOC容器

    一、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" />
    View Code

    2、基于注解的配置

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

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

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

    @Controller:标注一个控制器类

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

    @Repository:标注一个DAO类

    3、基于Java类配置

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

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

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

  • 相关阅读:
    Batch
    Batch
    《mysql必知必会》学习_第17章
    指针实现时间复杂度为O(n*logN)的排序算法(归并排序算法)
    《自控力》读书笔记
    Leetcode 49. Group Anagrams (242.Valid Anagram)
    Leetcode43. Multiply Strings
    Leetcode 233. Number of Digit One
    Python 格式化输出占位符替换
    Python字符串拼接
  • 原文地址:https://www.cnblogs.com/Jabben_Yi/p/9913941.html
Copyright © 2011-2022 走看看