栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring简单介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring简单介绍

IOC操作Bean xml配置文件
  • id属性:唯一标识
  • class属性:类全路径
  • 默认执行无参数构造方法完成对象创建
基于xml方式注入属性 DI 依赖注入 就是注入属性
  • set 方法注入
    • 在标签中使用property
      • name 类中属性名称
      • value 向属性中注入的值
  • 有参构造方法注入
    • 在标签中使用constructor-arg
      • name
      • value
  • p名称空间注入
    • 引入p属性
    • p:bname
    • p:bauthor
  • xml方式注入其他类型属性
    • 字面量
IOC操作Bean管理(FactoryBean)
  • 两种类型bean
    • 普通bean 返回类型=配置文件中定义的bean类型
    • 工厂bean FactoryBean 可以不一样
  • 工厂bean
    • 实现接口FactoryBean
    • 方法中定义返回类型
  • bean的作用域
    • 单实例 默认
    • 多实例
    • 可以通过bean标签中的scope属性设置
      • 默认值 singleton 单实例对象 加载配置文件时就创建
      • prototype 多实例对象 getBean()时才进行创建
      • request
      • session
  • bean的生命周期
    • 构造器创建bean实例(无参数构造)
    • 为bean属性设置值,调用set方法
    • (将bean实例传递给前置处理器)
    • bean的初始化方法,需要配置
    • (将bean实例传递给后置处理器)
    • bean的使用
    • bean的销毁的方法,需要配置
    • (加上bean的后置处理器)
自动装配
  • 根据制定装配规则(属性名称或者属性类型),spring可以自动将匹配的属性值进行注入
  • autowire=
    • byName 根据属性名称 id值=属性值
    • byType 根据属性类型
外部属性文件

基于注解方式操作bean 注解
  • 代码特殊标记
  • @注解名称(属性名称=属性值)
spring针对bean管理中提供的注解
@Component
@Service
@Controller
@Repository
基于注解方式实现对象创建
  • 开启组件扫描
  • 添加注解
组件扫描配置
use-defalut-filters="false" 需要自己配置filter

基于注解方式实现属性注入
@AutoWired 根据属性类型进行自动装配  对象类型 byType
	@AutoWired
    private UserDap userDao;
@Qualifier 根据属性名称进行注入 搭配@AutoWired byName
	
@Resource 根据类型或者名称

@Value 注入普通类型属性 

@Value(value="abv") //等价property
private String name;
完全注解开发
  • 创建配置类,替代xml配置文件
@Configuration//配置类
@ComponentScan(basePackages)
//  加载配置类
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class)
AOP 基础概念
  • 面向切面编程,降低耦合度
底层原理 有接口时,使用JDK动态代理 创建接口实现类的代理对象 jdk动态代理
  • 使用proxy类里的方法创建代理对象
  • newProxyInstance(ClassLoader loader,类 interfaces,InvocationHandler h)
    • 类加载器
    • 类实现的接口
    • 增加的配置逻辑
编写动态代理
  • 创建代理对象代码
    • 实现InvocationHandler接口
    • 有参构造传递对象
    • 增强逻辑
    • 原方法实现
      • menthod.invoke(obj,args)
    • 调用proxy.newProxyInstance
3. 没有接口时,使用CGLIB动态代理 1.创建当前类子类的代理对象 术语 连接点
  • 类中可以被增强的方法
切入点
  • 实际被增强的方法
通知(增强)
  • 实际增强的逻辑部分
  • 多种类型
    • 前置通知
    • 后置通知
    • 环绕通知
    • 异常通知
    • 最终通知 finally
切面
  • 动作
  • 将通知应用到切入点的过程
AOP操作 spring框架一般都是基于AspectJ实现AOP AspectJ,独立AOP框架 切入点表达式
  • 作用:知道对哪个类里面的哪个方法进行增强
  • 语法结构
    • execution(【权限修饰符】【返回类型】【类全路径】【方法名称】【参数列表】)
  • 对add方法进行增强
    • execution(*com.atguigu.dao.BookDao.add(…))
  • 对所有方法进行增强
    • execution(* com.atguigu.dao.BookDao.*(…))
  • 对所有类,所有方法进行增强
    • execution(* com.atguigu.dao..(…))
进行通知的配置
  • 在spring配置文件中,开启注解扫描
  • 使用注解创建User和UserProxy对象
  • 在增强类上面添加注解@Aspect
  • 在spring配置文件中开启生成代理对象

//配置不同类型的通知
@Before(value="execution()")
@After()最终通知
@AfterReturning()后置通知
@AfterThrowing()
@Around()
相同切入点获取
@Pointcut(value=execution())
public void demo(){
}

@Before(value="demo()")
有多个增强类对同一个方法进行增强,通过order注解改变优先级 AspectJ配置文件

  切入点
  
  配置切面
  
  	作用在具体的方法上
    
完全注解开发
  • config配置文件
JdbcTemplate 概念
  • spring框架对JDBC进行封装,方便实现对数据库操作
准备工作
  • bean.xml
    • 数据库连接池
    • JdbcTemplate对象
      • 注入datasource
    • 实体类
具体实现
  • 添加删除修改功能
    • update(String sql,Object… args )
  • 查询功能
    • 查询返回某个值
      • queryForObject(String sql,Class requiredType)
    • 查询返回对象
      • queryForObject(String sql,RowMapper rowMapper,Object… args)
        • RowMapper是接口,返回不同数据类型,使用这个接口实现类完成数据封装。
    • 查询返回集合
      • query(String sql,RowMapper rowMapper,Object… args)
    • 批量添加删除修改功能
      • batchUpdate(String sql,List batchArgs)
        • List集合,添加多条记录数据
事务 概念
  • 事务:数据库操作的最基本单元,要么都成功,要么都失败
  • 四个特性ACID
    • 原子性 不可分割
    • 一致性 总量不变
    • 隔离性
    • 持久性
事务操作
  • 经典转钱案例
    • 开启事务操作
    • 进行业务操作
    • 没有发生异常,提交事务
    • 出现异常,事务回滚
  • spring中进行事务操作管理(一般添加到service层)
    • 编程式事务管理
    • 声明式事务管理
  • 一般使用声明式事务管理
    • 基于注解方式
    • 基于xml配置文件方式
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号