Spring&MVC应用----第一章

spring简介

工作原理
Spring是一种通过JavaBean配置应用程序的方法,不需要通过new关键词创建对象,只需在配置文件中配置JavaBean。当对象与对象之间有依赖关系的时候,我们也只需要在配置文件中把依赖关系体现出来,这些被配置的Bean将会纳入Spring管理,放置于Spring容器中。我们只需要写很少量的代码便可得到Spring容器,并且从Spring容器中得到配置的JavaBean。这种解决依赖性的方法即控制反转(IOC,即Inversion of Control)或者依赖注入(Dependency Injection),从技术上来说,即使用某种容器组织相互依赖的对象。除了IOC之外,Spring话可以将分散在系统的公共代码统一组织起来,在运行的时候加入到系统中,这就是AOP(面向切面编程)。
框架简介
3、Spring 框架简介
Spring 中的一些名词:
(AOP,即 Aspect Oriented Programming)的容器框架,解决了J2BE开发中许多常见的问题。我们需要了解一下
Spring 是用于简化企业应用程序开发过程的开源框架,属于轻量级的控制反转(10C)和面向切面编程

  1. 轻量级:以所占大小及系统开销分析,Spring属于轻量级。整个 Sprins框架可以打包为 IM左右的 JAR
    包,且系统开销较小。同时,Spring 为非侵入式,若系统基于 Spring 开发,其所含的对象一般不依赖于 Spring
    的类。
  2. I0C: IOC 使对象被动接受依赖类,而并非主动获取。也就是说,告诉 Spring“你”是什么,“你”需要什么对象,然后 Spring 会在系统运行到适当的时候,把“你”要的对象主动给“你”,同时也把“你”交给其他需要“你”的对象。所有的类的创建、销毁都由 Spring 来控制,控制对象生存周期的不再是引用它的对象,而是 Spring。对于某个具体的对象而言,使用 Spring 之前是它控制其他对象,现在是所有对象都被 Spring 控制,所以叫控制反转。在系统运行中,动态的向某个对象提供它所需要的其他对象,这一点是通过DI(依赖注
    入)实现的。
  3. AOP:面向切面编程(也叫面向方面编程),关注系统的横向切面。通俗点说就是把代码“切开”,然后在
    需要的位置上动态加入公共代码。比如日志或者事务支持。
  4. 容器:Spring 是一个包含且管理系统对象生命周期和配置的容器,在使用 Spring 应用开发的时候,几乎所有的 JavaBean 对象都需要 Spring 来“盛放”。Spring容器的作用是管理对象。
  5. Spring 框架:Spring 能够通过简单的组件组合为复杂的系统。Spring 框架为分层架构,由 7个定义良好的模块组成,各模块构建于核心容器之上,核心容器定义了创建、配置及管理 Bean 的方式

依赖注入

以计算机组装为例演示。计算机由主机和显示器组成。我们需要输出一台计算机的信息,比如该计算机由什么型号的主机、什么型号的显示器组成。下面我们一起来分析并设计该系统。主机设计成一个类,该类(MainFrame)中有一个方法,用来输出主机的型号。显示器设计成一个接口,该接口(Display)用来输出显示器型号。计算机设计成一个类,该类(Computer)中包含主机和显示器两个属性,并有一个输出计算机信息的方法。
结果如下:
在这里插入图片描述
实现步骤:1).创建WebProject项目:computer。
2).手动导入jar包并添加BuildPath。
3).在src目录下创建applicationContext.xml,内容如下:

<?xmlversion="1.0"encoding="UTF-8"?>
<beans
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

</beans>

4).编写主机类:MainFrame,代码如下所示:

package com.test;
public class MainFrame {
		private String modeType;//主机型号
//输出主机信息
	public void printMainFrameInfo(){
			System.out.println("主机型号: "+modeType);
}
//省略get、 set、带参和无参构造方法。
}

5).编写显示器接口: Display,代码如下所示:

package com.test;
		public interface Display {
		public void printDisplayInfo();//输出显示器信息
}

6
).创建显示器接口的实现类: SamsungDisplay 和 LgDisplay,代码如下所示:

//LG显示器
		public class LgDisplay implements Display{
		public void printDisplayInfo() {
		System.out.println("显示器: LG显示器");
}
}
//三星显示器
		public class SamSungDisplay implements Display{
		public void printDisplayInfo() {
		System.out.println("显示器:三星显示器");
}
}

这是两个实现类,要写在两个文件中。
7).创建计算机类: Computer,包含主机和显示器。代码如下所示:

package com.test;
public class Computer {

		private MainFrame mainFrame;//主机
		private Display display;//显示器
//输出计算机配置信息
public void printComputerInfo(){
		System.out.println("计算机配置如下: ");
		mainFrame.printMainFrameInfo();//输出主机信息
		display.printDisplayInfo();//输出显示器信息
}
//省略get、 set、带参和无参构造方法。
}

无参构造方法和 set 方法必须要有!
8).编写 spring 配置文件,代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!--配置主机 -->
<bean id="mainFrame" class="com.test.MainFrame">
<property name="modeType" value="联想高配主机"></property>
</bean>
<!--配置三星显示器 -->
<bean id="samsung" class="com.test.SamSungDisplay"></bean>
<!--配置LG显示器 -->
<bean id="lg" class="com.test.LgDisplay"></bean>
<!-- 配置计算机 -->
<bean id="computer" class="com.test.Computer">
<property name="mainFrame" ref="mainFrame"></property>
<property name="display" ref="samsung"></property>
</bean>
</beans>

9).编写测试类执行代码如下所示:

package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
		public static void main(String[] args) {
		ApplicationContext context = new
		ClassPathXmlApplicationContext("applicationContext.xml");
		Computer c = (Computer) context.getBean("computer");
		c.printComputerInfo();
}
}

10).检查项目结构,如下图所示:
!](https://img-blog.csdnimg.cn/20201106234229587.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE3NjMyMTI5,size_16,color_FFFFFF,t_70#pic_center)

11).显示执行结果
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值