spring

spring,第1张

一、Spring 概述 1.1、web项目开发中的耦合度问题

·在Servlet中需要调用service中的方法,则需要在Servlet类中通过new关键字创建Service的实

public interface ProductService{
        public List<Product> listProducts();
    }
public interface ProductService{
        public List<Product> listProducts();
    }
public class ProductServiceImpl2 implements ProductService{
        public List<Product> listProducts(){
            //查询好评商品
        }
    }
public 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中的方法,也需要在service实现类通过new关键字创建DAO实现类对象
·如果在实现new关键字创建对象:

 ·标题失去了面向接口编程的灵活性
 ·代码的侵入性增强(在一个类中new另外一个,增加了耦合度)、降低了代码的灵活性
1.2、 面向接口编程


解决方案:在Servlet中定义Service接口的对象,不适用new关键字创建实现类对象,在servlet的实例化的时候,通过反射动态的给Service接口的对象变量赋值。
如何实现:Spring可以做到!

1.3Spring介绍

Spring是一个轻量级的控制反转和面向切面的容器框架,用来解决企业项目开发的复杂度问题——解耦
·轻量级:体积小,对代码没有侵入性
·控制反转:IoC(Inverse of Control),把创建对象的工作由Spring完成,·Spring在创建对象的时候同时可以完成
对象属性赋值(DI)
·面向切面:AOP(Aspect Oriented Programming)面向切面编程,可以在不改变原有业务逻辑的情况下实现对业务的增强
·容器:实例的容器,管理创建的对象.

1.4spring架构

·官网 https://spring.io/

·Spring架构图

1.4.1 Core Container

Spring容器组件,用于完成实例的创建和管理
·core 核心
·beans 实例管理
·context 容器上下文

1.4.2 AOP、Aspects

Spring AOP组件,实现面向切面编程
·AOP
·Aspects

1.4.3 web

Spring web组件实际指的是SpringMVC框架、实现web项目的MVC控制
·web(Spring对web项目的支持)
·webmvc(SpringMVC)

1.4.4 Data Access

Spring数据访问组件,也是一个基于JDBC封装的持久层框架(即使没有mybatis,Spring也可以完成持久化的数据库 *** 作)
·tx

1.4.5 Test

Spring的单元测试组件,提供了Spring环境下的单元测试支持
·test

二:Spring IoC

Spring Ioc 容器组件,可以完成对象的创建,对象属性赋值,对象管理

2.1.1 创建Maven工程

·Java
·Web

2.1.2 添加SpringIoc依赖

·core
·beans
·aop
·expression
·context

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.12.RELEASE</version>
</dependency>

2.1.3 创建Spring配置文件

通过配置文件“告诉”Spring容器创建什么对象,给对象属性赋什么值
·在resource目录下创建名为 applicationContext.xml 的文件(文件名可以自定义的)

<?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:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--对于一个xml文件如果作为框架的配置文件,需要遵守框架的配置规则-->
<!--通常一个框架为了开发者能够正确的配置,都会提供xml的规范文件(dtd\xsd)-->
<!--xsd 可以根据配置引入多个,只要引入了相应的xsd,可以使用相应标签规则属性-->


</beans>
2.2 SpringIoC使用

使用SpringIoC组件创建并管理对象

2.2.1 创建一个实体类
public class Student {

    private String stuNum;
    private String stuName;
    private String stuGender;
    private int stuAge;
    private Date enterenceTime;//入学日期

}
2.2.2 在Spring配置文件中配置实体类

ClassPathXmlApplicationContext

//通过Spring容器创建Student对象
//1、初始化Spring容器,加载Spring配置文件
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2、通过Spring容器,获取Student对象
Student student2 = (Student) context.getBean("stu");
2.3 IoC和DI

·IoC(Inverse of Control) 控制反转,依赖Spring对象工厂,完成对象的创建
·DI (Dependency Injection)依赖注入,在Spring完成对象创建的同时依赖Spring容器完成对象属性的赋值

2.3.1 IoC

当我们需要通过Spring对象工厂创建某个类的对象时候,需要将这个交给Spring管理——通过bean标签配置

<bean id="book" class="com.liguoqing.ioc.bean.Book"></bean>  
2.3.2 DI

通过Spring容器给创建的对象属性赋值

<!--通过bean标签将实体类配置给Spring进行管理,id表示实体类的唯一标识(自己定义,一般是类名小写)-->
    <bean id="stu" class="com.liguoqing.ioc.bean.Student">
        <property name="stuNum" value="10002"/>
        <property name="stuName" value="李四"/>
        <property name="stuGender" value="女"/>
        <property name="stuAge" value="18"/>
        <property name="enterenceTime" ref="date"/>
    </bean>
2.4 DI依赖注入 2.4.1 依赖注入三种方式

Spring容器加载配置文件之后,通过反射创建类的对象,并给属性赋值;
Spring容器通过反射实现属性注入有三种种方式:
·set方法注入
·构造器注入
·接口注入(不常用)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/786525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存