Spring_day01

框架的概念:程序员

框架就是把一些通用的类,和方法集中起来。避免没必要要的重复开发,解放了程序员,提升了开发效率spring

Spring  SpringMVC   Mybatisapp

:Spring框架

是一个开源框架。而且是一个轻量级的框架,可以一站式的分层部署项目。可以整合如今主流框架起到一个粘合剂的做用单元测试

:轻量级测试

1.空间占用角度:spa

spring的核心包不到1MB,占用计算机的资源特别小prototype

2.对容器的依赖角度:xml

对容器依赖性越低 越轻量对象

SpringIOC

IOC就是控制反转

将对象建立的权利交给Spring容器来管理。由容器来管理对象的生命周期。

Person p = new Person();    //手动的建立过程

Person p1 = Spring容器.getXXX();

SpringIOC的实现步骤:

1.导入相关的JAR

2.编写实体类

3.编写配置文件(1.编写配置文件的头    2.编写对象的具体映射关系)

4.启动spring容器

5.经过容器获取对象

6.调用对象的方法完成相应的功能

Spring具体实现过程:

2.编写实体类

3.编写配置文件

1.spring默认的文件的名称是applicationContext.xml

2.spring的配置文件的名称能够是任意

3.beans 只要是spring管理的类就是一个bean

4.bean的编写 

id是惟一的标识 不可以重复

class写的就是类的全名(包名+类名)

id的编写原则 见名知意 首字母小写。其余驼峰规则

class属性最好使用自动提示保证不出错(若是没有就关闭再打开)

5.建立Spring容器

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

6.获取对象

Context.getBean("ID");

7.对象调用方法

:@Test补充

叫作单元测试

要求:

1.返回值必须是public void XXX(){     }

2.@Test标签必须加载方法上

SpringIOC的原理

控制反转的过程:

Spring容器在启动的时候。先去读取applicationContext.xml配置文件。读取顺序是按行读取。每当读取到一个bean的时候就会按照bean中的class属性依据反射的方法建立出来对象,把建立出来的对象当作value值存储到MAP中,bean的ID当作Map中的key造成键值对的形式,保存到Spring容器中,方便之后调用

:对象获取的方法

1.经过bean中的id可以获取对象

context.getBean("hello"); 

2.经过class属性来获取

Hello hello = context.getBean(Hello.class);

注意:

1.对象获取的时候尽可能使用ID,不要用class,可能会因为类型不惟一报错。

2.若是bean中的ID重复,那么Spring在建立对象时保存到map中的时候就会报错。会报ID已经存在的错误。

缘由:已经存在的bean不能被修改

:对象建立的方式

1.经过默认的构造方法建立对象

注意的前提:

经过bean中的class利用反射生成对象的时候必须要有无参构造。所之后再写构造方法的时候切记必定要加无参构造,不然生成对象时会出错。

2.静态工厂建立对象

class 静态工厂类

factory-method 生产对象的方法

<bean id="calendar1" class="factory.StaticFactory" factory-method="getDate"></bean>

Spring的执行过程:

首先会根据class找到静态工厂类,而后经过factory-method

找到类中的静态方法,执行相关的操做,若是该方法不是静态方法则会报错。因此使用静态工厂 必需要调用静态方法

3.实例工厂建立对象

<bean id="newFactory" class="factory.NewFactory"></bean>

<bean id="calendar2" factory-bean="newFactory" factory-method="getDate"></bean>

实例工厂建立对象时,首先根据factory-bean找到相应的工厂bean,而后根据工厂的class建立工厂对象。根据factory-method

调用工厂对象的方法建立须要的对象。

4.Spring工厂建立对象

<bean id="calendar3" class="factory.SpringFactory"></bean>

class属性写的是Spring工厂的类型。当Spring容器在建立对象的时候会自动的调用实现方法中的getObject方法,帮助建立对象。

SpringFactory须要实现一个接口

SpringFactory implements FactoryBean<Calendar>

其余的都交给Spring来处理

Spring bean中的属性

1.别名标签

<alias name="TareneHello" alias="你好1607"/>

2.对象的单例和多例

单例对象:spring容器内部只有一份

1.Spring容器内部默认维护了一个单例对象。

2.scope="prototype"

scope属性为prototype时根据bean生成的对象就是多例对象。

3.scope="singleton" 

scope属性为singleton和默认不写的时候对象建立都是单例的。

使用场景:

购物车须要是多例的,不然会形成混论。

3.懒加载问题

说明:理想状态下,咱们须要什么对象容器帮咱们生产什么对象,这是最合理的,这样作既能知足需求又能减小计算机压力

1.什么是懒加载:

懒加载就是在容器启动的时候不会建立对象,当经过容器getBean()的时候才会建立对象。这样作能实现最理想的状态。

2.lazy-init="true" 实现懒加载

   lazy-init="false" 当即加载

   若是默认不写 也是当即加载

3.全局的懒加载配置

default-lazy-init="true" 就能实现懒加载

default-lazy-init="false/default" 当即加载

bean中的懒加载为default 应该与全局的懒加载配置保持一致。

4.自定义的初始化和销毁方法

init-method="init" destroy-method="destroy"

自定义的初始化和销毁能够手动配置。而且执行。

5.DI(依赖注入)

能够经过Spring容器能够动态的注入属性

1.依赖注入能够为简单类型赋值,也能够为引用类型赋值。

可是前提条件是属性必须添加setXXX方法。若是没有set方法则不能实现注入。

2.Spring能够为简单类型和复杂类型进行赋值。包括

List Set Map(内部维护的是一个LinkedHashMap)

相关文章
相关标签/搜索