spring学习笔记

Spring 框架

1、框架的作用

​ 通常由应用程序直接使用new创建新的对象,为了将对象的创建和使用相分离,采用工厂模式,即应用程序将对象的创建及初始化职责交给工厂对象.

​ 一般情况下,应用程序有自己的工厂对象来创建bean.如果将应用程序自己的工厂对象交给Spring管理,那么Spring管理的就不是普通的bean,而是工厂Bean.

调用getBean()方法,Spring返回的不是直接创建的Bean的实例,而是由工厂Bean创建的Bean实例.

一般在Spring中配置工厂Bean,有3种不同类型的工厂Bean的配置.

  1. 静态工厂:将其纳入Spring容器来管理,需要通过factory-method指定静态方法名称
  2. 实例工厂:创建具体Bean实例的是实例,不是静态方法配置文件需要配置两个bean:第一个Bean和普通的Bean没有区别,第二个bean定义如何通过工厂Bean获取Bean,需要指定工厂Bean的名称和方法名称
  3. 实现FactoryBean接口:实现了FactoryBean接口的Bean,不再被视为普通的Bean.Spring会自动检测.

2、框架的配置

​ 1、依赖spring官方的jar包

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.0.2.RELEASE</version>
</dependency>

​ 2、配置appConfig.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--普通配置-->
    <bean id="stu" class="bean.Student" init-method="init" destroy-method="destroy"/>
    <!--静态工厂-->
    <bean id="stuFac" class="bean.StudentFactory" factory-method="getStudent"/>
    <!--实例工厂,然后通过工厂生产bean实例-->
    <bean id="teaFac" name="factory" class="bean.TeacherFactory"/>
    <bean id="tea" class="bean.TeacherFactory" factory-bean="factory" factory-method="getTeacher"/>
    <!--类实现了FactoryBean接口的配置-->
    <bean id="stuBeanFac" class="bean.StuBeanFactory"/>
</beans>

id:是唯一标识类的,name可以重命名类。

factory-method:指的是当前工厂类里面的方法。

scope:作用域,表示的是bean的作用范围,有两个值singleton和prototype,分别代表单例和原型。单例代表的是在容器初始化的时候,会把xml文件中所有的bean加载到容器中,当使用时就从容器中拿;原型则相反,在容器加载时不会把bean加载到容器中,当使用者真正使用的时候在加载。

init-method:所声明的方法会在创建对象时初始化。

destroy-method:当bean是单例的时候,所声明的方法会在对象销毁时执行;当对象是原型的时候则不会执行。

​ 3、多模块配置

​ 1、把多个模块的配置文件集中到一个xx.xml文件中,集中管理,使用的时候就使用这个xx.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans                      http://www.springframework.org/schema/beans/spring-beans.xsd">
           
    <!--导入其他模块的配置文件-->
    <import resource="appConfig1.xml"/>
    <import resource="appConfig2.xml"/>
    <import resource="appConfig3.xml"/>
</beans>

​ 2、在使用spring框架来创建bean的时候传入可变长参数,把多个xml文件传入

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("appConfig.xml","appConfig2.xml","appConfig3.xml");

​ 3、使用spring框架来创建bean

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。