Struts2学习-Ioc学习-spring
1、面向对象写法(带着面向过程的思维)
电脑 computer = new 电脑();
【电脑代码中 new 打印机()】
computer.打印文本("hello 140");
电脑和打印机告诉耦合
--------------------------------------
2、改进,电脑类中,不再new 打印机,采用注入方式
电脑 computer = new 电脑();
打印机 printer = new 打印机();
computer.setPrinter(printer);
把电脑和打印机解耦
但是,仍然存在一个问题:只有1台打印机,不能换
--------------------
3、改进,把打印机设置一个接口,分别添加2个实现类(分别是黑白和 彩色)
电脑 computer = new 电脑();
打印机 printer = new 彩色打印机();
computer.setPrinter(printer);
好处:切换打印机的时候,无须修改电脑类,
电脑和打印机彻底解耦
还有有问题:如果切换打印机,是改代码
(虽然不用改电脑类、也不要改各个打印机的类,
但是还是需要改测试调用类)
-----------------------
4、引入ioc重要思想:把new一个实现类的控制权,
从程序员从交出来,交给spring
在编码过程中,程序员是绝对不知道实现类是谁。
只要你知道,你已经错了。
学会:衣来伸手,饭来张口。
spring给你什么,你就用什么
--------------------------
5、改进spring
(属性的赋值,由代码改为spring注入)
-------------------------
http://www.cnblogs.com/xdp-gacl/p/4249939.html
http://www.cnblogs.com/ITtangtang/p/3978349.html
-----------------------------------
图解

1.新建空项目,配置spring
<!--配置spring-->
<!-- spring-context 已经包含了Core,Bean -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.0.RELEASE</version>
</dependency> <!-- 和struts结合时,需要web,Struts 2 Spring Plugin 2个东西 -->
2.测试类
原本是要写这些代码的
电脑I computer = (电脑I) context.getBean("computer");
打印机I printer = (打印机I)context.getBean("printer");
System.out.println(computer);
System.out.println(printer);
computer.玩游戏();
computer.打印文本("hello 140");
但引入spring后
//1.先拿到一个spring容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.拿1台电脑
电脑I computer = (电脑I) context.getBean("computer");
computer.打印文本("hello 140");
3.因为我们有三个class,所以<bean>三个
<bean id="computer" class="com.nf.test.笔记本电脑">
<!-- ref="printer2"只要修改这里就可以使用-->
<property name="printer" ref="printer1"></property> </bean> <bean id="printer1" class="com.nf.test.黑白打印机"></bean>
<bean id="printer2" class="com.nf.test.彩色打印机"></bean>
地址:https://gitee.com/MuNianShi/ioc-spring.git
Struts2学习-Ioc学习-spring的更多相关文章
- Struts2学习-Ioc学习
网址:http://blog.csdn.net/qq_22654611/article/details/52606960可以在这个网址学学. 1.新建空项目,然后建立Java EE,在把Java EE ...
- Spring5 概述及Spring IOC学习
Spring Framework 5 1. Spring框架 1.1 Spring框架概述 1.2 主要内容 Spring框架是一个开源的JavaEE的应用程序 主要核心是 IOC(控制反转)和AOP ...
- Spring框架学习(2)IOC学习
内容源自:IOC理解 spring ioc注入的三种方式 ioc工厂bean深入理解 耦合性,在java中表现为类之间的关系,耦合性强说明类之间的依赖关系强: 侵入性:框架对代码的侵入: 在传统 ...
- MyEclipse Spring 学习总结一 Spring IOC容器
一.Spring IOC容器---- Spring AllicationContext容器 程序的结构如下: 1.首先在MyEclipse 创建创建Java Project 2.创建好后,添加spin ...
- Spring IOC学习
IoC基础 控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法.没有IoC的程序中我们使用面向对象 ...
- 一、Spring的控制反转(IOC)学习
一.控制反转 1.什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面向对象中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(D ...
- Spring学习1:Spring基本特性
http://longliqiang88.github.io/2015/08/14/Spring%E5%AD%A6%E4%B9%A01%EF%BC%9ASpring%E5%9F%BA%E6%9C%AC ...
- spring学习笔记(一) Spring概述
博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书. 强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...
- SpringMVC—Struts2拦截器学习网址整理
引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...
随机推荐
- SPRING中的线程池ThreadPoolTaskExecutor(转)
转自:https://blog.csdn.net/zhanglongfei_test/article/details/51888433 一.初始化 1,直接调用 ThreadPoolTaskExecu ...
- (转)Cobbler自动化部署最佳实践
原文:http://www.xuliangwei.com/xubusi/446.html 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统, ...
- bootstrap table 以及xEdittable的应用
以前一直没有用过 bootstrap 表格框架,因为项目css框架用的是bootstrap,为考虑到统一性的原因,所以选用了这个框架 步骤: 第一步:引用 <link href=" ...
- java.lang.NumberFormatException: For input string: "1" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang
java.lang.NumberFormatException: For input string: "1" at java.lang.NumberFormatException ...
- 前端渲染模板(一):Thymeleaf
一.使用 本篇文章将以SpringBoot为框架来介绍Thymeleaf的用法. 1 资源文件的约定目录结构 Maven的资源文件目录:/src/java/resources spring-boot ...
- sublime text 3 主题更换
1.安装colorsublime,里面收藏了大量的主题 2.要选择主题的时候,Ctrl+Shift+P 打开Package Control,输入color,如图 3.Enter,进入选择列表,键盘上下 ...
- WES7 定制界面完整过程(去除所有windows标识)
转载但有改动 红色字体记录 目的:实验从启动开始到出现桌面,不出现任何windows图标或标识.重大提示:在某些虚拟机上面操作和真实机器是不一样的,主机会容易很多;所以在虚拟机无法实现效果的时候使用主 ...
- Java - Latch和Barrier的区别
之所以把Latch与Barrier放在一起比较是因为他们给人一种相似的感觉. 他们都是阻塞一些行为直至某个事件发生,但Latch是等待某个事件发生,而Barrier是等待线程. 先比较一下JCIP中对 ...
- 基于语法分析器GOLD Parser开发的数学表达式计算器
最近发现一款文法分析神器,看完官网(http://goldparser.org/)的介绍后感觉很犀利的样子,于是就拿来测试了一番,写了一个数学表达式分析的小程序,支持的数学运算符如下所示:常规运算:+ ...
- Android的消息机制简单总结
参考文章: http://gityuan.com/2015/12/26/handler-message-framework/#next 参考资料: Android Framework的源码: Mess ...