SPRING

1:spring框架的功能:

​ Spring框架比较繁杂,功能较多的框架,主要创建、销毁、管理对象,项目bean对象管理粘合剂,相当与项目管家。主要通过IOC与AOP两大技术实现。

2:spring框架优点:

​ 1)方便解耦,简化开发 ​ Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。 ​ 2)方便集成各种优秀框架 ​ Spring 不排斥其他各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis等)的支持。 ​ 3)降低 Java EE API 的使用难度 ​ Spring 对 Java EE 开发中非常难用的一些 API都提供了封装,使这些API 应用的难度大大降低。 ​ 4)AOP 编程的支持 ​ Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。 ​ 5)声明式事务的支持 ​ 只需要通过配置就可以完成对事务的管理,而无须手动编程。

​ 6)面向接口编程

3:IOC:控制反转:

原来项目代码中对象都是由我们自己new创建(我们负责对象的创建,项目不管),现在引入spring框架,由spring框架创建对象(对象不由我们创建,由spring框架创建) 所有bean(对象)交给spring容器管理,由spring创建、销毁对象,统一管理(不使用new创建)。默认所有对象单例模式。原来所有的对象都是通过代码开发者自己new,控制权在开发者自己手上,现在交给spring管理,对象的控制权交给代码自己,称之为控制反转。

a:IOC容器创建对象

1):方式1:构造器实例化

​ 默认调用无参构造器

1:新建maven项目,在pom.xml文件定义:
    <dependencies>
        <!--代码测试包-->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <!--spring核心工具包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
        <!--IOC工具包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
        <!--依赖注入包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
        <!--spring表达式包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
    </dependencies>

2:自定义类:
	package com.woniu.service;
    public class StuServiceImp implements StuService {
        public StuService(){
            System.out.println("StuService构造器......");
        }
        public void addStu(){
            System.out.println("addStu方法.......");
        }
    }

3:在src/main/resources包根目录创建spring核心配置文件:springConfig.xml,复制基本结构
	<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-3.0.xsd">
		
        <!--该bean交给spring管理:创建、销毁、管理对象,创建出来对象的名字叫做stuService-->
    	<bean id="stuService" class="com.woniu.service.StuService"></bean>
	</beans>
	注意:所有在该xml文件中定义的bean对象,都交给spring管理(创建、销毁等等.....)


4:创建ioc容器对象,并获得对象
    public class Test {
        public static void main(String[] args) {
            //创建一个IOC容器对象(读取springConfig.xml文件,创建所有bean对象。)
            ApplicationContext context = 
                                new ClassPathXmlApplicationContext("/springConfig.xml");
            //根据id获得对象
            StuService stuService1 = (StuService)context.getBean("stuService");
            //根据类名获得对象
            StuService stuService2 = context.getBean(StuService.class);
            System.out.println(stuService1);
            System.out.println(stuService2);
            stuService1.addStu();
        }
    }

2):方式2:静态工厂模式

3):方式3:实例工厂模式

4):方式4:注解方式

b:bean的作用域:

c:IOC的父接口:

d:DI:依赖注入:

​ spring执行IOC的时候,每一个类当中通常会有类属性:spring不建议new对象,通过工厂模式把容器创建的对象赋值给类属性,简单理解:IOC容器在创建对象A时,需要给该对象A的类属性赋值的过程:称之为依赖注入

e:FactoryBean与BeanFactory:

1):FactoryBean:

​ 可以自己实现该接口实现自己需求的注入功能。

2):BeanFactory

3):区别:

总结:

4:复习代理的作用

5:AOP:面向切面编程:

​ OOP:面向对象编程:纵向编程。

​ servlet

​ ↓

​ service

​ ↓

​ mapper

​ AOP:横向编程,不是用来替代OOP,而是对OOP的补充。

​ servlet

​ ↓

​ service

​ ↓

​ →aop代码

​ mapper

​ →aop代码

6:整合mybatis

6:事务处理:

7:自定义注解

8:idea添加mybatis插件

​ 见word文档

9:spring常用注解

10:springmvc:

​ 针对控制层,视图层(页面模板)封装,对MVC进行封装。

1)基本应用

2)映射处理器

3)适配处理器

4)视图解析器

5)目的与作用

6)注解映射处理器和注解适配处理器

7)控制层代码

8)接收参数

9)乱码处理

11:ssm整合

1)依赖

2)web.xml

3):spring-mvc.xml

4)mybatisConfig.xml

5)业务层

6)控制层

7)请求乱码

8)上传

12:异步请求

1:请求测试1

2:请求测试2:

3:请求测试3

4:请求测试4

5:请求测试5

6:请求测试6

7:请求测试7

8:RestFul

9:RestFul请求方式:

全称:Representational State Transfer(表述性状态转移)。

RESTful架构是对MVC架构改进后所形成的一种架构,通过使用事先定义好的接口与不同的服务联系起来。在RESTful架构中,浏览器使用GET,POST,DELETE和PUT四种请求方式分别对指定的URL资源进行增删改查操作。因此,RESTFUL是通过URI实现对资源的管理及访问,具有扩展性强、结构清晰的特点。

特点:请求路径不以.xxx结束,且可以根据请求方式来实现不同的功能

10:异步上传

13:拦截器:

​ 原理是AOP,可以执行在servlet之前或者servlet之后且view之前或者view之后执行。

14:常用注解

最后更新于