IOC和DI

(一)IOC

(1) 概念

IOC (Inverse of Control) 反转控制,就是将原本在程序中手动创建对象的控制权,交给spring框架管理。简单的说,就是创建对象控制权被反转到了spring框架

(2)实例

1.UserService.java

package service;

public interface UserService {
public void getAa();
}

2.UserServiceImpl.java

package service;

public class UserServiceImpl implements UserService{

    @Override

    public void getAa() {

        System.out.println("aaaaaaaaaaa");

    }

}

3.applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <!--UserService将创建权交给spring-->

<bean id="userService" class="service.UserServiceImpl"></bean>

</beans>

4.UserTest.java

package Test;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import service.UserService;

import service.UserServiceImpl;

public class UserTest {

    @Test

    public void one(){

        //创建spring工厂

        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

        //通过工厂获得类

        UserService userService=(UserService)applicationContext.getBean("userService");

        //通过类调用方法

        userService.getAa();

    }
}
(二)DI

(1)概念

DI(Dependency Injection)依赖注入,就是在spring创建这个对象的过程中,将这个对象所依赖的属性注入进去

(2)实例

1.UserService.java

package service;

public interface UserService {

    public void getAa();

}

2.UserServiceImpl.java

package service;

public class UserServiceImpl implements UserService{

    //添加属性

    private String name;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    @Override

    public void getAa() {

        System.out.println("aaaaaaaaaaa"+name);

    }

}

3.applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<!--UserService将创建权交给spring-->

<bean id="userService" class="service.UserServiceImpl">

    <!--设置属性-->

    <property name="name" value="张三"/>

</bean>

</beans>

4.UserTest.java

package Test;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import service.UserService;

import service.UserServiceImpl;

public class UserTest {

    @Test

    public void one(){

        //创建spring工厂

        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

        //通过工厂获得类

        UserService userService=(UserService)applicationContext.getBean("userService");

        //通过类调用方法

        userService.getAa();

    }

}

spring学习笔记之---IOC和DI的更多相关文章

  1. Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)

    在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IO ...

  2. Spring学习笔记1——IOC: 尽量使用注解以及java代码

    在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IO ...

  3. Spring学习笔记2——表单数据验证、文件上传

    在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...

  4. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  5. Java架构师之路 Spring学习笔记(一) Spring介绍

    前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...

  6. Spring学习笔记之依赖的注解(2)

    Spring学习笔记之依赖的注解(2) 1.0 注解,不能单独存在,是Java中的一种类型 1.1 写注解 1.2 注解反射 2.0 spring的注解 spring的 @Controller@Com ...

  7. Spring学习笔记(一)

    Spring学习笔记(一) 这是一个沉淀的过程,大概第一次接触Spring是在去年的这个时候,当初在实训,初次接触Java web,直接学习SSM框架(当是Servlet都没有学),于是,养成了一个很 ...

  8. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  9. Spring入门一:IOC、DI、AOP基本思想

    Spring框架是一个集众多涉及模式于一身的开源的.轻量级的项目管理框架,致力于javaee轻量级解决方案.相对于原来学过的框架而言,spring框架和之前学习的struts2.mybatis框架有了 ...

随机推荐

  1. 应用安全 - CMS - ThinkCMF - 漏洞汇总

    ThinkCMF X1.6.0-X2.2.3任意内容包含漏洞 Date: 2019.10 类型: 任意文件写入导致远程代码执行 影响范围: ThinkCMF X1.6.0 ThinkCMF X2.1. ...

  2. Canvas入门08-绘制仪表盘

    需求 实现下图所示的仪表盘的绘制. 分析 我们先来将仪表盘进行图形拆分,并定义尺寸. 我们绘制的逻辑: 绘制中心圆 绘制环外圈圆 绘制环内圈圆 绘制刻度内圈圆 绘制刻度线 绘制刻度文字 绘制指针 定义 ...

  3. python 并发编程 多进程 互斥锁 目录

    python 并发编程 多进程 互斥锁 模拟抢票 互斥锁与join区别

  4. python控制流-名词解释

    一.控制流的元素 控制流语句的开始部分通常是“条件”,接下来是一个代码块,称为“子句”. 二.控制流的条件 条件为了判断下一步如何进行,从而求布尔值的表达式.几乎所有的控制流语句都使用条件. 三.代码 ...

  5. Java IO NIO详细讲解

    1.IO Java IO概述 2.NIO Java NIO浅析

  6. [19/06/03-星期一] HTML基础_C/S与B/S的区别&标题标签(h1-h6)、段落标签(p)

    一.C/S与B/S的区别 C/S(Client/Server):客户端/服务器 1)一般使用的软件都是C/S架构,比如QQ.360.office365: 2)C表示客户端,用户通过客户端来使用软件:S ...

  7. es6中let实例应用之一

    有如下情景 html部分: <button class="btn">按钮1</button> <button class="btn" ...

  8. Spring的底层实现机制

    Spring的底层实现机制是通过Demo4j+java反射机制实现的. 使用demo4j来解析xml,使用反射机制实例化bean.

  9. Markov Chain Monte Carlo Simulation using C# and MathNet

    Math.Net Numerics has capability to conduct Markov Chair Monte Carlo simulations, yet the document i ...

  10. 当页面完全加载完成后执行一个JS函数

    方法1.如下程序,当页面完全加载后执行openTheIndexPage()方法  <html>  <head>  <meta http-equiv="Conte ...