首页 > 其他分享 >Spring

Spring

时间:2023-03-10 14:24:07浏览次数:39  
标签:事务 配置文件 Spring Bean 引用 properties 注入

老版本的基础知识

  1. IoC:控制反转。类A引用类B,如果我们要更改类A引用类C,那么程序就要再测试,发布一次,浪费资源,因此我们可以不在类A中写上new B(),将对象放入Bean层中,需要的时候从Bean层中取,就叫IoC。
  2. DI:依赖注入:如果Bean层中有些类之间有依赖关系(A引用C),那么我们就在Bean层中把这个问题一并解决了。
  3. 配置文件:如何从Bean层中取对象呢?

配置文件(ApplicationContext.xml)中写入以下内容:

在需要的地方取对象:

  1. DI依赖注入的配置:
  2. Bean可以有别名:
  3. Bean造出来的对象都是单例对象,如果不想是单例对象可以修改
  4. Bean实例化的方式就是调用相应类的空参构造方法
  5. 如果想从工厂类中改写为IoC形式

静态工厂(了解):

实例工厂(了解):

FactoryBean:用这个方法会自动调getObject方法

  1. Bean的生命周期:

  1. setter注入与构造器注入:

对于一个类中的属性是其他类或者基本属性,两个注入又分为简单类型与引用类型

setter注入:

构造器注入:

  1. 自动装配:(按照BookServiceImpl中引用的类型(BookDao)在配置文件中找这个类型去返回)

(一般一个类不会配置两遍Bean,所以不用担心重复问题)

  1. 集合注入:

  1. 加载Properties文件:

先设置一个context空间

表示读取全部的properties文件

对properties文件内的属性进行读取

注解开发:

  1. @Component(id):相当于把当前类作为Bean写入配置文件(id:自己起的名)

如果做表现层业务层数据层的开发也可以用:@Controller和@Service和@Repository

  1. @ComponentScan(name):扫描name写的包名,扫描到各种Bean(写@Component的类)
  2. @Mapper:1,2相配合进行使用,也可以1,2都不使用,而是在Dao接口上写@Mapper
  3. @Bean:管理第三方Bean时使用,表示接下来这个方法返回的是一个Bean
  4. @Configuration:设置当前类为配置类,代替配置文件起作用
  5. @PropertySource(xxx)表示读取配置文件
  6. @Scope():表示当前类是否作为单例出现,singleton or prototype
  7. @Autowired:依赖注入时,在引用的类上写@Autowired就行。因为是按类型自动装配,因此如果要有多个同类型类,未了确定具体引用哪一个,@Autowired下加上@Qualifier(id)即可
  8. @PathVariable:表示获取前端url上的参数
  9. @RequestBody:表示以json格式获取前端传来的数据,跟post搭配使用

整合MyBatis与JUnit:

MyBatis:

只需要在config包下加一个MyBatisconfig类就行了,并且原来的MybatisConfig.xml可以不写了

一个包别名,一个是mapper,中间的url,password.....都写在了jdbc.properties文件中,在主配置类中读取jdbc.properties就行了。

JUnit:

  • pom文件中加两个依赖

  • 之后测试类这么写就可以了

AOP:面向切面编程:

  1. 概念:在不改动原有代码的基础上增强功能的实现(以代理形式在工作)
  2. 实现:
  • pom.xml添加依赖:

  • 在主包下加一个aop包再加一个类写:

@Component:让Spring扫描这个包

@Aspect:表示这是一个AOP接口

@Pointcut:定义一个切入点,当执行到execution内的方法时,执行切入

@Before:先切入(先执行method方法),再进行update方法

@Around

  • 在spring.config方法上加,表示有aop需要被扫描
  • 切入点表达式:

  • 案例:
  • 如果要打印返回值,还可以在获取后输出之前修改参数(防止格式出问题)

事务:

  • 为了实现原子性事务的一致性,我们首先要在实现类对应接口方法上加注解@Transactional,由于部分·异常是不执行回滚的,我们定义,让程序回滚
  • 在Spring配置类加上事务管理器与注解

  • 事务的传播行为:如果我们要实现日志与事务的分离,保证事务出错回滚后日志仍记录,就需要给日志创建一个新的事务,在日志实现类对应的接口方法上加注解

 

 

 

 

 

 

 

 

 

 

 

 

标签:事务,配置文件,Spring,Bean,引用,properties,注入
From: https://www.cnblogs.com/miraclemaker/p/17203197.html

相关文章

  • Spring-AOP工作流程
    Spring-AOP工作流程3,AOP工作流程3.1AOP工作流程由于AOP是基于Spring容器管理的bean做的增强,所以整个工作过程需要从Spring加载bean说起:流程1:Spring容器启动容器启......
  • IDEA利用maven配置Spring
    写在前面:此篇文章主要是记录IDEA利用maven配置Spring的全过程。由于本人也是慢慢探索出来的,所以有不全或者遗漏的地方,还请大家斧正。请耐心看完文章,前期工作做完后IDEA才可......
  • Spring-AOP简介&案例
    Spring-AOP简介&案例1,AOP简介Spring有两个核心的概念,一个是IOC/DI,一个是AOP。对于AOP,我们前面提过一句话是:AOP是在不改原有代码的前提下对其进行增强。1.1什么是AOP......
  • spring-boot-starter-* 和 *-spring-boot-starter的区别
    spring-boot-starter-*   和    *-spring-boot-starter的区别  答:一个是官方的命名,一个是非官方的命名,非官方的命名一般都是 第三方或者自己 开发的 start......
  • spring学习49-延迟加载
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchem......
  • spring学习48-属性注入注入数组和列表的说明
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchem......
  • spring学习48-自动装配中定义的bean的作用域
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchem......
  • IDEA 启动 Spring Boot 时报错: Command line is too long
    当新拉取的项目启动时,报Errorrunning'MyApplication':Commandlineistoolong.ShortencommandlineforMyApplicationoralsoforSpringBootdefaultconfigur......
  • springboot-整合mysql多数据源配置
    一、springboot+mybatis使用分包方式整合1、application.yml配置文件server:port:8080#启动端口spring:datasource:db1:#数据源1jdbc-url:j......
  • [java-Spring]-Spring Boot入门基本操作
    目录一、SpringBoot入门1、SpringBoot简介2、微服务3、环境准备1、MAVEN设置;2、IDEA设置4、SpringBootHelloWorld1、创建一个maven工程;(jar)2、导入springboot相关的......