初级java开发(Spring基础)

原创声明

本文作者:泉幽

转载请务必在文章开头注明出处和作者。

  1. Spring

  • 概念:是一个容器,用于管理对象,底层运用反射将数据存入map;具有lOC控制反转,AOP面向切面编程的特性。

  • IOC控制反转

  • 概念:本质是一个BeanFactory工厂,采用了单例模式创建代理bean对象,并赋值管理等;最终都交给Spring容器。

  • 使用:通过DI(依赖注入)实现功能

  • 基于XML的DI

  • 基于注解的DI

常见的注解DI注入:@Component,@Respotory,@Service,@Controller

@Autowired

Spring提供的默认ByType注入引用属性。结合@Qualifier使用ByName。

@Ressource

JDK提供的默认ByName注入引用属性,失败自动使用ByType。

注:BeanFactory与FactoryBean的区别,前者是工厂用于创建实例Bean,后者是普通的类。

  • AOP面向切面编

  • 概念:与业务无关却为业务模块共同调用的逻辑封装(封装公共逻辑),底层是jdk动态代理/CJLIB动态代理,使用AspectJ框架

  • 使用

横切关注点

对哪些方法进行拦截,拦截后怎么处理

切面

横切关注点的抽象

连接点

被拦截到的方法

切入点

连接点进行拦截的定义

通知(advice)

拦截到连接点之后要执行的代码

前置:@Before
后置:@AfterReturning
异常:@AfterThrowing
最终:@After:目标方法执行之后,总是会执行,包括异常后也会执行
环绕:@Around:方法调用前后,完成自定义行为(是否执行,是否返回,是否抛出异常结束等行为)
  • Spring事务

  • 概念:统一事务的管理及实现类模型,底层运用@Around;具有ACID事务特性,原子性 ( Atomicity )、一致性( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )

  • 使用:一个是编程式事务(精准),另一个是声明式事务(注解)

  • TransactionTemplate模板

  • IOC注解@Transactional:

①包含的属性,传播行为,隔离级别,提交/回滚时间,可读性,超时时间等。

②使用的位置,可以标注在类(所有非静态开启事务)或者方法上。

  • Spring的Bean

  • bean的生命周期

  • Bean 创建、Bean 的初始化、Bean的生存期、 Bean 的销毁。

bean的创建方式有四种,构造器,静态工厂,实例工厂,setter注入的方式
不同的bean初始化和创建的时间也不相同。
在作用域为singleton的时候,bean是随着容器一起被创建好并且实例化的
在作用域为pritotype的时候,bean是随着它被调用的时候才创建和实例化完成
  • bean的作用域

  • Bean在Spring容器中是单例的(默认情况),@Scope注解来修改Bean的作用域。

singleton :单例(默认)
prototype :每次调用getBean()时,都会执行new操作,返回一个新的Bean。
request :每次HTTP请求都会创建一个新的Bean。
session:同一个HTTP Session共享一个Bean,不同的HTTP Session使用不同的Bean。
globalSession:同一个全局的Session共享一个Bean,一般用于Portlet环境。
  1. SpringMVC

  • 概念:Spring 的模型-视图-控制器(MVC)框架,核心是围绕一个 DispatcherServlet 来设计的(底层是servlet)

  • Mode:对现实事务的抽象,封装了数据和对数据的操作。负责与数据库进行交互。

  • View:用户界面。

  • Controller:能控制对用户输入的响应、响应方式和流程。负责视图和模型之间的交互。

②表现层、业务层、数据访问层。(古老方式有jsp+servlet+javabean)。

  • SpringMVC执行原理

  • 前端控制器是DispatcherServlet接口实现类,

  • 映射处理器是HandlerMapping接口实现类,

  • 视图解析器是ViewResolver接口实现类,

  • 页面控制器是Controller接口实现类。

图2.1 SpringMVC执行原理

  • SpringMVC核心技术

重定向

redirect:"完整路径",不受制于视图解析器。

请求转发

fowrd:"完整路径",不受制于视图解析器。

拦截器

实现HandlerInterceptor接口三个方法:

1)preHandle(预处理)
返回值: true: 可以通行。 false:不可以通行。
特点:在处理器方法之前执行,可以截断请求。
2)postHandle(后处理)
特点:在处理器方法之后执行,可以 获取处理器方法返回值
3)afterCompletion(最后执行)
特点:在请求处理完成后执行,可以 做资源回收

异常处理

@ExceptionHandler,属性value=异常名.calss;默认=处理其他异常

  1. SpringBoot

  • 概念:简化了Spring的开发与项目搭建过程,拥有高效性。同时具有自动配置,起步依赖starter的特性。

  • 嵌入的 Tomcat,无需部署 WAR 文件

  • 简化 Maven 配置

  • 由yam/properties代替了xml的配置

  • 自动配置 Spring(所需功能对应start都存在spring-boot-autoconfigure依赖包中,使用了@Conditonal满足条件则自动实例化bean)

  • 启动流程

  • SpringBootApplication启动,调用run方法;

  • =》获取监听器参数配置=》打印Banner信息=》创建并初始化容器=》监听器发送通知

  • 核心注解

起步类注解

@SpringBootApplication

@CompoentScan( )
@SpringBootConfiguration
@EnableAutoConfiguration

声明bean对象注解

@Configuration

@Bean(“自定义组件名”)

@RestController:等同于@Controller+@ResponseBody

查询:@GetMapping
删除:@DeleteMapping
修改:@PutMapping
增加:@PostMapping

扫描注册bean对象包注解

@MapperScan(“指定mapper包路径” )

@ServletCompoentScan( )

导入注册bean对象注解

@import( "导入指定组件.class")

@importResources( )
@EnableConfigurationProperties( )

条件注解

@Conditional:是否实例化bean

@AutoConfigAfter
  1. Mybatis

  • 概念:是一个增强的JDBC,运用反射,动态代理实现DAO接口,能简化数据库CURD。

  • 缓存机制

  • 一级缓存原理(默认且无法关闭)

  • SqlSession级别,同一个 SqlSession 中进行相同的 SQL 语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取,一级缓存最多缓存 1024 条 SQL。

  • 二级缓存原理(手动开启)

  • Mapper级别,同在Mapper的命名空间中,且不同的SqlSession 是可以共享,通过CacheExecutor 先匹配缓存中是否存在,不存在则查询数据库

注:SqlSession中的getMapper()方法,运用反射,把<mapper>中namesapce和id整合在一起。

  • 配置文件SQL语句

  • sql语句as,like区别

  • as:用于修改列别名=属性名

  • like:模糊查询中使用#{属性名}等同于?

  • sql语句#{},${} 区别

  • 1.,#占位符号代替【?】,使用PreparedStatement执行sql,效率高,避免sql注入,更安全。

  • 3.,$不使用占位符,是字符串连接方式,使用Statement对象执行sql,效率低,有sql注入的风险,缺乏安全性。

  • 5.,$原理是字符串连接,可以控制sql语句,(替换列名,表名等)

  • 配置文件返回值

  • resultType:同名的列覆给同名属性,一般通过配置文件,设定别名。

  • resultMap:代码复用方便,列名可以对应不同名字自定义属性。

定义方法返回List<Student>

reslutType=“Student全限定路径/别名”

定义方法返回int

reslutType=“java.lang.Integer/int”

定义方法放回Student类

resultType=“Student全限定路径/别名”

定义方法返回map

resultType=“java.lang.map/map”,返回一条key:列名,value:列值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值