spring知识点

1、spring 的概念

spring是一个轻量级的控制反转(ioc)和面向切面编程(aop)的容器框架

  轻量级:spring 的大小和开销都是轻量的

  非入侵:在程序开发中,不需要引入spring 的包

  控制反转(ioc):把对象的创建的权利交给容器

  面向切面编程(aop):基于代理的 可以将核心业务和系统服务分隔开

 

2、spring的入门

2.1、认识一下spring的jar包

  spring核心配置文件和核心类

    applicationContext.xml (Spring核心配置文件) 作用:用于配置所有的类,这些类叫做springbean

    BeanFactory: 容器的工厂类(接口) 作用:用于创建或者获取springbean,即spring管理的对象

    ApplicationContext(接口):他是BeanFactory的子类 ,叫做应用上下文对象。用于创建或者获取springbean,功能比BeanFactory更强大。(常用)

 

  BeanFactory和ApplicationContext的区别

    BeanFactory:懒加载

    ApplicationContext:非懒加载

 

3、spring IOC

控制反转 Inversion of control :把对象的创建、销毁的权利交给容器框架,由容器来管理对象生命周期。

  ioc不是一个新的技术,只是一种新的思想或理念,可以实现“松耦合”

  ioc包括依赖注入(DI,核心)和依赖查找

    DI:依赖注入 ,就是在实例化对象的时候,由容器来设置这些对象的属性值

 

spring的注入:

  属性的注入:--setter方法注入(见下方<!-- java简单类型的注入 -->)

  构造器注入:通过有参构造函数对属性赋值

    指定在构造中的参数名称

    <bean id="user" class="cn.domain.User">

      <constructor-arg value="44" name="age"/>

      <constructor-arg value="Jack" name="nm"/>

    </bean

  注入其他类:通过ref引入其他类的id

    <!-- 声明UserController -->

    <bean id="userController" class="com.hpe.controller.UserController">

      <!-- 注入userService -->

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

    </bean>

 

4、Bean的装配方式

  4.1、基于XML文件的装配

    注意以下两点: 1、Bean类必须提供一个默认的无参构造方法

            2、Bean类必须为需要注入的属性提供对应的setter方法。

  4.2、基于注解的装配

 

 

 

一些实例(便于对知识点的理解):

applicationContext.xml的头信息(用的时候copy,不用背)

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

 

applicationContext.xml的内部配置信息:

  <!-- 配置的第一个springbean

    以下配置就相当于 Person person = new Person();

    scope:作用域,默认是单例的 singleton

    singleton:单例的,默认的

    prototype:原型模式。每次到spring中获取对象的时候都会获取到新的实例

    request:同一个请求中是一个单例。不同请求不同单例

    session:同一个会话是一个实例

  -->

  <bean id="person" class="cn.bean.Person" scope="prototype">

    <property name="name" value="zhangsan"></property>

  </bean>

 

  <!-- java简单类型的注入 -->

  <bean id="user" class="cn.bean.User">

    <property name="age" value="23"></property>

    <property name="name" value="jack"></property>

 

    <!-- 给list类型注入 -->

    <property name="list">

      <list>

        <value>1111</value>

        <value>2222</value>

        <value>3333</value>

      </list>

    </property>

 

    <!-- map属性注入 -->

    <property name="map">

      <map>

        <entry key="name" value="rose"></entry>

        <entry key="addr" value="USA"></entry>

      </map>

    </property>

    <!-- 注入其他类 使用ref指向其他的bean-->

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

  </bean>

 

 从spring中获取对象的方法:

  //1、加载spring的运行环境,初始化并且创建对象

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

  //2、从容器中获取对象 person 指的是bean的id

  Person p = (Person) app.getBean("person"); 

posted @ 2018-09-12 13:02  身为风帆_sail  阅读(158)  评论(1)    收藏  举报