【Spring笔记1】JavaWeb的三层结构以及Spring IOC、Spring DI详解

1.JavaWeb项目的三层结构

JavaWeb三层结构包括:web层(也叫表示层)、service层(也叫业务逻辑层)、dao层(也叫数据访问层)

web层使用的框架有struts、spring mvc,service层使用spring框架,dao层使用hibernate或者mybatis框架。我们所说的SSM框架也就是Spring+Spring MVC+MyBatis的缩写。

浏览器访问服务器上的Web层,三层结构表示图如下所示,其中Spring贯穿三层,起到承前启后的作用。而浏览器通常使用JavaScript和jQuery框架。

Spring的学习过程主要分三个阶段:

阶段一:基础学习(IoC控制翻转,DI依赖注入),Spring整合Junit,Spring整合web

阶段二:AOP面向切面编程、JdbcTemplate

阶段三:事务管理、SSH整合

2.Spring基础学习

2.1 Spring基础知识

说明:Eclipse和MyEclipse为开发Java的工具,Eclipse允许安装第三方插件来扩展自己的功能,而MyEclipse可以理解为一个插件集,是在Eclipse上的一个扩展,专用于J2EE的开发。Eclipse包括了MyEclipse,功能更强大,我们可以由MyEclipse开发转为直接用Eclipse开发。

什么是Spring?

Spring是一个开源的轻量级Java开发框架,它是为了解决企业开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只能由EJB完成的事情。Spring的主要优势就是其分层结构,它是一个分层的Java SE/EE full-stack(一站式)开源框架。

轻量级是相对于EJB(Enterprise JavaBean:企业级JavaBean)而言的,其依赖资源少,消耗资源少。

Spring框架由七个定义明确的模块组成:核心容器(Spring Core)、应用上下文模块(Spring Context)、Spring的AOP模块(Spring AOP)、JDBC抽象和DAO模块(Spring DAO)、对象/关系映射集成模块(Spring ORM)、Spring的Web模块(Spring Web)、Spring的MVC模块(Spring  Web MVC)

Spring的体系结构

Spring的核心

  • Spring的核心是控制反转(IoC)面向切面(AOP)

Spring的优点

  • 方便解耦,简化开发  (高内聚低耦合)
    • Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理
    • spring工厂是用于生成bean
  • AOP编程的支持
    • Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
  • 声明式事务的支持
    • 只需要通过配置就可以完成对事务的管理,而无需手动编程
  • 方便程序的测试
    • Spring对Junit4支持,可以通过注解方便的测试Spring程序
  • 方便集成各种优秀框架
    • Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
  • 降低JavaEE API的使用难度
    • Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

2.2 IoC(掌握)

1.MyEclipse(或者Eclipse)创建web project

2.导入jar包(4+1,  4个核心:beans、core、context、expression,1个依赖:common-loggings)

这里用的是spring-framework-3.2.0.RELEASE-dist.zip的jar包和spring-framework-3.0.2.RELEASE-dependencies.zip

导jar包的时候别导错了(xxx-sources.jar表示的是源码,xxx.RELEASE.jar表示的是字节码)

3.添加目标类(抽象类和实现类)

package com.syc.a_ioc;

public interface UserService {
	public void addUser();

}
package com.syc.a_ioc;

public class UserServiceImpl implements UserService {

	@Override
	public void addUser() {
		// TODO Auto-generated method stub
		System.out.println("a_ioc add user");

	}

}

4.添加配置文件

位置:任意,一般放在classpath下

名称:任意,约定取applicationContext.xml

内容:添加schema约束

约束文件位置:spring-framework-3.2.0.RELEASE\docs\spring-framework-reference\html\xsd-config.html

<?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">

<!--配置Service
	<bean>配置需要创建的对象
	id:用于从Spring容器中获取实例
	class:全限定类名
-->
<bean id="userServiceId" class="com.syc.a_ioc.UserServiceImpl"></bean>

</beans>

 5.测试

package com.syc.a_ioc;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestIoC {
	@Test
	public void demo01(){
		//之前new方法
		UserService userService = new UserServiceImpl();
		userService.addUser();
	}
	
	@Test
	public void demo02(){
		//从Spring容器获得
		//1.获得容器
		String xmlPath = "com/syc/a_ioc/beans.xml";
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
		//2.获得内容,不需要自己new,直接从容器中获得
		UserService userService = (UserService) applicationContext.getBean("userServiceId");
		userService.addUser();
	}

}

效果:两种方法都能将"a_ioc add user"打印输出

发布了36 篇原创文章 · 获赞 28 · 访问量 5269

猜你喜欢

转载自blog.csdn.net/shao_yc/article/details/104394532
今日推荐