Spring简介:特性与架构详说明
本文最后更新于:1 年前
传统web程序及缺点
传统程序开发步骤
传统web项目开发中的耦合度问题
在 Servlet 中调用 service 中的方法,则需要在Servlet类中通过new关键字创建Service的实例:
1
2
3public interface ProductService{
public List<Product> listProducts();
}1
2
3
4
5public class ProductServiceImpl1 implements ProductService{
public List<Product> listProducts(){
//查询热销商品
}
}1
2
3
4
5public class ProductServiceImpl2 implements ProductService{
public List<Product> listProducts(){
//查询好评商品
}
}1
2
3
4
5
6
7
8
9
10
11
12public class ProductListServlet extends HttpServlet{
//在servlet中使用new关键字创建ProductServiceImpl1对象,增加了servlet和service的耦合度
private ProductService productService = new ProductServiceImpl1();
protected void doGet(HttpServletRequest request,HttpServletResponse response){
doPost(request,response);
}
protected void doPost(HttpServletRequest request,HttpServletResponse response){
productService.listProducts();
}
}在service实现类中需要调用DAO中的方法,也需要在servcie实现类通过new关键字创建DAO实现类对象;
如果使用new关键字创建对象:
- 失去了面向接口编程的灵活性
- 代码的侵入性增强(增加了耦合度)、降低了代码的灵活性
- 增强项目的扩展性
解决方案
面向接口编程 |
---|
在Servlet中定义Service接口的对象变量,不使用new关键字创建实现类对象,在servlet的实例化的时候,通过反射动态的给Service对象变量赋值。
如何实现?Spring可以做到!!!
Spring 简介
Spring是一个轻量级的控制反转和面向切面的容器框架,用来解决企业项目开发的复杂度问题——解耦。
Spring 特性说明
- 轻量级:体积小,对代码没有侵入性。
- 控制反转:IoC(Inverse of Control)。把创建对象的工作交由Spring完成,Spring在创建对象的时候同时可以完成对象属性赋值(DI),即依赖注入。
- 面向切面:AOP(Aspect Oriented Programming)面向切面编程,可以在不改变原有业务逻辑的情况下实现对业务的增强。
- 容器:实例的容器,管理创建的对象。
Spring 架构详解
Core Container
Spring的容器组件,用于完成实例的创建和管理。
- core:Spring的核心
- beans:实例管理
- context:容器上下文
AOP、Aspects
Spring AOP组件,实现面向切面编程。
- aop
- aspects
Web
Spring Web组件实际指的是SpringMVC框架,实现web项目的MVC控制。
- web:Spring对web项目的支持
- webmvc:SpringMVC组件
Data Access
Spring数据访问组件,也是一个基于JDBC封装的持久层框架。(即使没有mybatis,Spring也可以完成持久化操作)
- tx
Test
Spring的单元测试组件,提供了Spring环境下的单元测试支持。
- test
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!