啥是IOC ?啥是DI ?
2024-10-05 00:50:06
1、IOC是什么?
IOC (inverse of controll)控制反转:所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到spring的容器(applicationContext.xml)
2、DI是什么?
Di(dependency injection)依赖注入:实际上DI和IOC是同一个概念,spring设计者认为DI更能准确表示spring的核心技术
笔者认为:学习框架最重要的就是学习各种配置
3、传统的方法和使用spring的方法区别
使用spring,没有new对象,我们把new对象的任务交给spring框架
4、第二个spring项目
结构层
源码:UserService.java
package UserService;
import ByService.ByService;
public class UserService {
private String name;
private ByService byservice; public void setByservice(ByService byservice) {
this.byservice = byservice;
} public void setName(String name) {
this.name = name;
} public void say() {
System.out.println("你好:" + name);
byservice.sayBye();
}
}
源码:ByService.java
package ByService;
public class ByService {
private String name; public void setName(String name) {
this.name = name;
}
public void sayBye()
{
System.out.println("Bye"+name);
}
}
源码:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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">
<bean id="UserService" class="UserService.UserService">
<property name="name" value="小明" />
<property name="byservice" ref="ByService" />
</bean>
<bean id="ByService" class="ByService.ByService">
<property name="name" value="小紅"/>
</bean>
</beans>
源码:Test.java
package Test; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import UserService.UserService; public class Test { public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService u=(UserService)context.getBean("UserService");
u.say(); } }
5、项目总结:
spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们只要getBean(id)即可。
最新文章
- Zepto源码
- Ubuntu 14.04 AMD 64位 下 Android Studio 的安装
- [RGEOS]支持栅格数据读取和显示
- 打开了chrome审查元素 发现报错 Uncaught SyntaxError: Unexpected token )
- Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示
- Ubuntu常用终端快捷键
- DESTOON系统文章模块默认设置第一张图片为标题图的方法
- IOS百度地图语音导航
- HTML&;lt;!DOCTYPE&;gt; 宣示
- Android 常规任务的高度【schedule】与【scheduleAtFixedRate】差额
- Azkaban使用安装文档
- Vmware Vtop基本使用
- mac操作
- pyorient
- 阿里云上部署了zabbix,突然无法收到报警邮件的解决办法
- WdColor&#160;枚举&#160;(Word)
- android Handlerr.removeCallbacksAndMessages(null)的妙用
- 一键LNMP文件
- Python学习之路5 - 函数
- 【Luogu】P2465山贼集团(树形状压DP)
热门文章
- 【HDOJ5447】Good Numbers(数论)
- [LOJ3119][CTS2019|CTSC2019]随机立方体:组合数学+二项式反演
- python学习之路(12)
- Atcoder ARC101 E 树dp
- C++入门经典-例5.14-丢失的内存,关于内存泄漏
- C++入门经典-例3.25-使用循环输出闰年
- 2018092609-2 选题 Scrum立会报告+燃尽图 03
- Hive SQL 语法学习与实践
- spark streaming 1: SparkContex
- 一、基础篇--1.1Java基础-hashCode和equals方法的区别和联系