目录
一:spring介绍
二:Spring体系结构
三:Spring搭建
1.Maven 导入 spring 核心基础 jar
<!-- spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
2.编写一个 User 实体类
public class user(){
private String name;
private int age;
public void work(){
System.out.println("名字"+this.name);
}
}
3.编写 spring 配置文件
<?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="user" class="com.ff.spring.bean.User"> </bean>
</beans>
<bean id="user" class="com.ff.spring.bean.User"> </bean> 这段代码相当于 创建了一个user对象只不过这个对象有spring来创建和管理也就是上面所说的IOC 其中 id 为 类的名称 class为类的路径
IOC(控制反转)
四:Spring Bean 管理
1:基于 xml 配置方式
2.注解方式实现
导入 Spring aop jar 包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.2.2.RELEASE</version> </dependency>
开启注解扫描
在spring.xml中
<context:component-scan base-package="包名"> </context:component-scan>
注解创建对象
注解方式注入属性
1.@Autowired 是 Spring 提供的注解,可以写在字段和 setter 方法上。如果写在 字段上,那么就不需要再写 setter 方法。默认情况下它要求依赖对象必须存在, 如果允许 null 值,可以设置它的 required 属性为 false
2.byType 自动注入 该注解默认使用按类型自动装配 Bean 的方式。
注解与 XML 的对比
五Spring JDBC
1.加入相应jar包
<!-- spring-jdbc -->< dependency >< groupId >org.springframework</ groupId >< artifactId >spring-jdbc</ artifactId >< version >5.2.2.RELEASE</ version ></ dependency ><!-- 阿里数据源 -->< dependency >< groupId >com.alibaba</ groupId >< artifactId >druid</ artifactId >< version >1.1.10</ version ></ dependency >
<context:property-placeholder location="config.properties"/>
管理数据源对象
< bean id ="dataSource"class="com.alibaba.druid.pool.DruidDataSource">< propertyname ="driverClassName" value="${driverClassName}"></ property >< property name ="url" value ="${url}" ></ property >< property name ="username" value ="${uname}" ></ property >< property name ="password" value ="${pwd}" ></ property >< property name ="initialSize" value ="10" ></ property >< property name ="minIdle" value ="5" ></ property >< property name ="maxActive" value ="20" ></ property ></ bean >
在配置文件中创建 JdbcTemplate
< bean id ="jdbcTemplate" class ="org.springframework.jdbc.core.JdbcTemplate" >< property name ="dataSource" ref ="dataSource" ></ property ></ bean >
在类中获得 JdbcTemplate 对象,就可以直接使用。
@Autowired
JdbcTemplate jdbcTemplate
execute:无返回值,可执行 ddl,增删改语句update:执行新增、修改、删除语句;queryForXXX:执行查询相关语句;
六springAOP
1.AOP的概述
2.AOP概念
3.实现
加入AOP相关的jar包
< dependency >< groupId >org.springframework</ groupId >< artifactId >spring-aspects</ artifactId >< version >5.2.2.RELEASE</ version ></ dependency >
基于 aspectj 的 xml 配置方式实现
<bean id="aopdemo" class="com.ff.spring.aop.AopDemo"></bean>
<aop:config>
<!-- 配置切入点 -->
<aop:pointcut expression="execution(* com.ff.spring.service.UserService.adduser(..))"id="adduser"/>
<aop:pointcut expression="execution(* com.ff.spring.service.UserService.*(..))" id="allmethod"/>
<!-- 配置通知和切入点 -->
<aop:aspect ref="aopdemo">
<aop:before method="savelog" pointcut-ref="adduser"/>
<aop:after method="savelog" pointcut-ref="adduser"/>
<aop:around method="aroundAdvice" pointcut-ref="adduser"/>
<aop:after-throwing method="exceptionAdvice" pointcut-ref="allmethod" throwing="e" />
</aop:aspect>
</aop:config>
七 Spring 事物管理
1.事物的概述
2.Spring声明事务管理
<!-- 开启注解事务管理 -->< tx :annotation-driven transaction-manager ="transactionManager" />
开启注解事务管理后 只需要在类上加上标签 @Transactional 就可以为该类开启事务
3.Spring 事务传播行为
事务传播行为类型
|
说明
|
---|---|
PROPAGATION_REQUIRED
|
如果当前没有事务,就新建一个事务,如果已经存在一个事务中, 加入到这个事务中。这是最常见的选择。
|
PROPAGATION_SUPPORTS
|
支持当前事务,如果当前没有事务,就以非事务方式执行。
|
PROPAGATION_MANDATORY
|
使用当前的事务,如果当前没有事务,就抛出异常。
|
PROPAGATION_REQUIRES_NEW
|
新建事务,如果当前存在事务,把当前事务挂起。
|
PROPAGATION_NOT_SUPPORTED
|
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
|
PROPAGATION_NEVER
|
以非事务方式执行,如果当前存在事务,则抛出异常。
|
PROPAGATION_NESTED
|
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,
则执行与 PROPAGATION_REQUIRED 类似的操作。
|