Spring基础小白必学笔记
一、Spring的作用
学习spring首先要了spring到底是用来做什么的。Spring可以解决业务逻辑层和其他各层的耦合问题,也是一个框架的粘合剂,它让面向接口编程思想贯穿了整个系统,特点:高内聚,低耦合,设计层框架!
主要学习spring的以下部分:
- IOC思想
- AOP编程
- 声明式事务的支持
- 框架无缝整合其他框架声明式事务的支持
二、主要模块
Spring共有20多个子模块,模块按组7大块,
-
Spring Core
框架的最基础部分,提供 IoC 容器,对 bean 进行管理。 -
Spring Context
基于 bean,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化、校验和调度等功能。 -
Spring DAO
提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码,还提供了声明性事务管理方法。 -
Spring ORM
提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate、MyBatis 等。 -
Spring AOP
提供了符合AOP Alliance规范的面向方面的编程实现。 -
Spring Web
提供了基础的 Web 开发的上下文信息,可与其他 web 进行集成。 -
Spring Web MVC
提供了 Web 应用的 Model-View-Controller 全功能实现。
三、IOC是什么
当某个Java对象(调用者)需要调用另一个Java对象(被依赖对象)的方法时,调用者无需主动获取被依赖对象,调用者只要被动接受Spring容器为调用者的成员变量赋值即可。由此可见,调用者获取被依赖对象的方式由原来的主动获取,变成了被动接受。
四、Bean标签里四个属性的作用:
-
Name属性:给对象取名,名字可以同时取多个,但是不同的对象不能重复
-
Scope对象作用域属性:
2.1 scope = “singleton” 默认值,Spring容器默认创建的对象是单例!
2.2 scope=“prototype” 创建的对象是多例(每次使用对象的时候额外创建一个新的
2.3 scope=“session” 表示在一次会话范围内,Spring容器中的对象保持一个,公用同一个!
2.4 scope=“request” 表示在一次请求范围内,Spring容器中的对象保持一个,公用同一个
注意:后两个只能用在web项目里 -
对象懒创建(只有在scope = "singleton"才会生效)
lazy-init表示对象的加载时机(true:懒加载(使用对象的时候才创建);false(spring框架一启动就加载)) -
对象创建完成后调用的方法,和对象销毁后调用的方法
init-method=“对象创建完成后调用的方法”
destroy-method=“对象销毁后调用的方法”
五、Spring创建对象的四种方式
- 用无参构造方法创建
<!--方式1:无参构造方法创建对象-->
<bean id="p1" name="person1,person2" class="com.swjd.bean.Person"
scope="singleton" lazy-init="true"
init-method="init" destroy-method="destroy">
- 用带参的构造方法创建对象
<!--方式2:用带参的构造方法创建对象-->
<bean id="p2" class="com.swjd.bean.Person">
<constructor-arg index="0" type="int" value="9528"/>
<constructor-arg index="1" type="java.lang.String"
value="德玛西亚"/>
<constructor-arg index="2" type="java.lang.String" value="男"/>
</bean>
- 用静态工厂创建对象
<!--方式3:用静态工厂创建对象-->
<bean id="p3" class=