spring初笔记
Spring
简化了企业级开发的复杂性
简介
2002年首次推出Spring框架的雏形,interface21
Spring框架
:以interface21为基础,重新设计,不断丰富内涵,在2004年3月24日首次发布1.0正式版
Rod Johnson, Spring Framework的创始人,悉尼大学的博士,不是计算机专业,而是音乐学
Spring理念
:是现有的技术更加容易使用
SSH框架:Struct2
+ Spring
+ Hibernate
SSM框架:SpringMVC
+ Spring
+ Mybatis
优点
Spring是一个开源的免费的、轻量级,非侵入式框架,IOC(控制反转)和AOP(面向切面编程) 支持事务处理,对框架整合的支持
说白了Spring就是一个轻量级的控制反转和面向切面编程的框架
Spring Boot
1. 一个快速开发的脚手架
2. 基于它可以快速开发单个微服务
- 约定大于配置
Spring Cloud
基于SpringBoot进行快速开发
现在大多数公司都在使用SpringBoot的前前提是,完全掌握Spring和SpringMVC
承上启下的作用
IOC一句话来说就是:对象由spring来创建,管理、装配,IOC创建对象使用无参构造创建,默认带参构造创建对象
<!--有参构造创建对象,第一种,下标赋值-->
<bean id="user" class="com.siulon.pojo.User">
<constructor-arg index="0" value="000"/>
</bean>
<!--有参构造创建对象,第二种,,通过类型创建对象,不建议使用-->
<bean id="user" class="com.siulon.pojo.User">
<constructor-arg type="java.lang.String" value="siulon"/>
</bean>
<!--有参构造创建对象,第三种,,通过参数名创建对象-->
<bean id="user" class="com.siulon.pojo.User">
<constructor-arg name="name" value="333"/>
</bean>
Spring配置
别名
<alias name="user" alias="别名"/>
Bean的配置
id:bean的唯一标识符,相当与对象名
class:bean对象所对应的全限定名:包名+类型
name:也是别名,并且可以取多个别名
import
一般用于团队开发使用,它可以将多个配置文件,导入合并为一个
<import resource="beans.xml"/>
依赖注入DI
set方式注入【重点】
- 依赖注入:set注入
- 依赖:bean对象的创建依赖于容器
- 注入bean对象中所有的属性,用容器来注入
构造器注入
如果只有一个有参数的构造方法并且参数类型与注入的bean的类型匹配,那就会注入到该构造方法中
注解注入
使用注解需要注意
-
导入约束
context
约束 -
配置注解的支持
<context:annotation-config/>
@Autowired
(自动注入)有三个属性: Constructor,byType,byName ;默认按照byType注入
- constructor:通过构造方法进行自动注入,spring会匹配与构造方法参数类型一致的bean进行注入,如果有一个多参数的构造方法,一个只有一个参数的构造方法,在容器中查找到多个匹配多参数构造方法的bean,那么spring会优先将bean注入到多参数的构造方法中。
- byName:被注入bean的id名必须与set方法后半截匹配,并且id名称的第一个单词首字母必须小写,这一点与手动set注入有点不同。
- byType:查找所有的set方法,将符合符合参数类型的bean注入。
主要有四种注解可以注册Bean,每种注解可以任意使用,只是语意有所差异
@Component
可以用于注册所有的bean@Resposity
可以用于注册dao层的bean@Controller
主要用于注册控制层的bean@Service
主要用于注册服务层的bean
事务的ACID原则
- 原子性
- 一致性
- 隔离性
- 持久性
声明式事务:aop
编程式事务:需要在代码中进行事务管理
为什么要使用事务
- 如果不配置事务,可能存在数据提交时不一致的情况
- 事务在开发中十分重要,涉及到数据的一致性和完整性,不容有失