美文网首页
java-spring-1

java-spring-1

作者: 落云和枫 | 来源:发表于2018-11-26 14:22 被阅读0次

今日大纲

    Spring 框架简介及官方压缩包目录介绍

    Spring 环境搭建

    IoC 详解

    Spring 创建 Bean 的三种方式(包含工厂方式)

    scope 属性讲解(包含单例设计模式)

    DI 详解

    Spring 中几种注入方式

    利用Spring DI 实现生成 SqlSessionFactory对象

知识点详解

一 Spring 框架简介及官方压缩包目录介绍

    1.主要发明者:Rod Johnson

    2.轮子理论推崇者:

    2.1 轮子理论:不用写重复代码

    2.2 IT行业:直接使用写好的代码

    3.Spring 框架宗旨:不重新发明技术,让原有技术使用起来更加方便

    4.Spring 几大核心功能:1. IoC/DI(控制反转/依赖注入) 2.  AOP(面向切面编程)  3. 声明式事务

    5. Spring 框架 runtime

      5.1 test: spring 提供测试功能

      5.2 Core Container: 核心容器 spring 启动最基本的条件.

      5.2.1 Beans Spring 负责创建类对象并管理对象

      5.2.2 Core :核心类

      5.2.3 ConText:上下文参数.获取外部资源或者管理注解等

      5.2.4 SqEl:expression.jar

      5.3 AOP: 实现 aop 功能所需要的依赖

      5.4 Aspects 切面AOP 依赖的包


      5.5 Data Access/Integeration:spring 封装数据访问层相关内容

        5.5.1 JDBC : spring 对JDBC封装后的代码

        5.5 .2 ORM : 封装了持久层框架的代码,例如 Hibernate

        5.5.3 transactions:对象 spring-tx.jar,声明式事务使用


     5.6 WEB:需要spring 完成web相关功能是需要

5.6.1 例如:由tomcat 加载 spring 配置文件时需要有 spring-web包



    6. Spring 框架中重要概念

      6.1 容器(Container):Spring 当做一个大容器

      6.2 BeanFactory 接口 老版本:ApplicationContext 接口,是 BeanFacory 子接口.BeanFactory 的功能在 ApplicationContext 中都有.

    7.从 Spring3 开始把 Spring 框架的功能都拆分成多个 jar.  Spring2之前就一个jar

二 IoC 控制反转 (Inversion of Control)

    1 IoC 是什么

    1.1 IoC 完成的事情原先由程序员主动通过 new 实例化对象事情,转交给 Spring 负责.

    1.2 控制反转中的控制指的是:控制类的对象.

    1.3 控制反转中的反转指的是: 转交给 Spring 负责.

    1.4 IoC 最大的作用:解耦.

    1.4.1 程序员不需要管理对象,解除了对象管理和程序员之间的耦合


三 Spring 环境搭建

    1.导入jar(四个核心包 一个日志包[commons-logging])

    2. 在 src 下新建 applicationContext.xml

      2.1 文件名称和路径自定义.

      2.2 记住 Spring 容器 ApplicationConext,applicationContext.xml 配置的信息 最终都    会存储到 ApplicationConext 容器中

      2.3 Spring 配置文件是基于schema(扩展名 .xsd) ,schema 可以理解为 DTD的升级      版,但是比 DTD 具备更好的扩展性,每次引入一个 .xsd 文件是一个 namespace(xmlns)

    2.4 配置文件中只需要引入基本 schema 

      2.4.1 通过<bean/> 创建对象,默认配置文件被加载时创建对象

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

    <!--  id表示获取到对象标识

        class 创建哪个类的对象

    -->

    <bean id="peo" class="com.chen.pojo.People"/>

</beans>

    3. 编写测试方法

      3.1 gentBean("<bean> 标签的 id 值",返回值类型);如果没有第二个参数,默认是Object

      3.3 getBeanDefintionNames(), Spring 容器中目前所有管理的所有对象

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.chen.pojo.People;

public class Test { public static void main(String[] args) {

    // People peo = new People();

    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

    People people = ac.getBean("peo",People.class);

    System.out.println(people);

    // String[] names = ac.getBeanDefinitionNames();

    // for (String string : names) {

        // System.out.println(string);

    // }

}

四 Spring 创建对象的三种方式

1.通过构造方法创建

    1.1 无参构造创建:默认情况

    1.2 有参构造创建:需要明确配置

    1.2.1 需要在类中提供有参构造方法

    1.2.2 在applicationContext.xml 中设置调用哪个构造方法创建对象(如果设定的条件匹配多个构造方法,执行最后的构造方法)

    参数:

    index(参数的索引,从0开始)

    name(参数名)

    type类型(区分开关键字和封装类 int 和integer)


<!-- id表示获取到对象标识 class 创建哪个类的对象 -->

    <bean id="peo" class="com.chen.pojo.People">

    <!-- ref引用另一个bean value 基本数据类型或String等 -->

    <constructor-arg index="0" name="id" type="int" value="123"> </constructor-arg>

    <constructor-arg index="1" name="name" type="java.lang.String" value="张   三"></constructor-arg>

</bean>


测试

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

People people = ac.getBean("peo",People.class);

System.out.println(people);


2.实例工厂

2.1工厂设计模式:帮助创建类对象,一个工厂可以生产多个对象.

2.2实例工程:需要先创建工厂,才能生产对象

2.3 步骤 

2.3.1 必须要有一个实例工厂

public class PeopleFactory {

    public  People newInstance(){

        return new People(1,"测试");

    }

}


2.3.2 在 applicationContext.xml中配置工厂对象和需要创建的对象

<bean id="factory" class="com.chen.pojo.PeopleFactory"></bean>

<bean id="peo1" factory-bean="factory" factory-method="newInstance"></bean>


3 静态工厂

3.1 不需要创建工厂,快速创建对象

3.2 实现步骤

3.2.1 需要要有一个 实例工厂,加static方法

public class PeopleFactory {

    public static People newInstance(){

        return new People(1,"测试");

    }

}

3.3.2 在 applicationContext.xml中配置工厂对象和需要创建的对象

<bean id="peo2" class="com.chen.pojo.PeopleFactory" factory-method="newInstance"></bean>

五.如何给Bean 的属性赋值(注入)

1.通过构造方法设置值

2.设置注入(通过set方法)

2.1 如果属性是基本数据类型或者 String 等简单数据类型

<bean id="peo" class="com.chen.pojo.People">

    <property name="id">

    <value>456</value>

    </property>

    <property name="name">

    <value>zhangsan</value>

    </property>

</bean>


2.2 set<?>

<property name="sets">

    <set>

        <value>1</value>

        <value>2</value>

        <value>3</value>

        <value>4</value>

    </set>

</property>


2.3List

1.一个值:<property name="list" value="1"> </property>

2. 多值<property name="list">

<list>

<value>1</value>

<value>2</value>

</list>

           </property> 


2.4 数组

<property name="strs" >

    <array>

        <value>1</value>

        <value>2</value>

        <value>3</value>

    </array>

</property>

2.5 Map

<property name="map">

    <map>

        <entry key="a" value="b" > </entry>

        <entry key="c" value="d" > </entry>

    </map>

</property>


如果属性是Properties

<property name="demo">

    <props>

        <prop key="key">value</prop>

        <prop key="key1">value1</prop>

    </props>

</property>


六 DI

1. DI: 中文名称(依赖注入) 英文名称(Dependency Injection)

2. 什么是DI

DI 和 IoC 是一样的,当一个类(A)中需要依赖另一个类(B)对象时,把 B赋值给A的过程就叫做依赖注入

代码体现

<bean id="peo" class="com.chen.pojo.People">

<property name="desk" ref="desk"></property>

</bean>

<bean id="desk" class="com.chent.pojo.Desk">

<property name="id" value="1"></property>

<property name="price" value="12">

</property>

</bean>

七 使用Spring 简化Mybatis

1. 导入 Mybatis 所有的jar 和Spring 基本包,spring-jdbc,spring-tx,Spring-aop Spring-web,Spring 整合 mybatis的包

先配置 web.xml

编写spring 配置文件 applicationContext.xml

4. 编写代码

4.1 正常编写 pojo

4.2 编写 mapper 包下时必须使用接口绑定方案或注解方案(必须

有接口)

4.3 正常编写 Service 接口和 Service 实现类

3.3.1 需要在 Service 实现类中声明 Mapper 接口对象,并生成

get/set 方法

4.4 spring 无法管理 Servlet,在 service 中取出 Servie 对象

相关文章

  • java-spring-1

    今日大纲 Spring 框架简介及官方压缩包目录介绍 Spring 环境搭建 IoC 详解 Spr...

网友评论

      本文标题:java-spring-1

      本文链接:https://www.haomeiwen.com/subject/nivdqqtx.html