Spring之注解

SpringIOC注解

组件添加标记注解:

​ @Component:该注解标记类表示该类为一个普通类,表示为IOC中的一个组件bean

​ @Repository:该注解用于将数据访问层(Dao层)的类标识为Spring中的Bean

​ @Service:该注解作用域业务层(Service层),用于将业务层的类标识为Spring中的Bean

​ @Controller:该注解通常作用于控制层(controller),用于将控制层的类标识为Spring中的Bean

​ 注解中可以使用value,对应Bean中的id属性

自动装配:

​ @Autowired:在成员变量上直接标记@Autowried注解即可,实现自动装配,还可以使用构造器、set方法上,默认根据类型进行装配,如果想根据名称进行匹配,需要配合@Qualifier注解一起用

​ @Resource:默认根据Bean名称装配,未指定name时,使用属性名作为name,通过name找不到的话,会自动启动类型匹配

注入外部属性:

​ @value:可以作用于成员变量,方法参数等,

java 复制代码
 /**
  * 情况1: ${key} 取外部配置key对应的值!
  * 情况2: ${key:defaultValue} 没有key,可以给与默认值
  */
@Value("${catalog:hahaha}")
private String name;
基于配置类管理Bean注解

​ @Configurtion:标注当前类是配置类,代替XML文件

​ @PropertySource("classpath:配置文件名"):使用注解读取外部配置,替代<context:properity-placeholder标签

​ @ComponentScan(basePackages = {"包名"}):用于配置扫描包,替代<context:component-scan标签

@Bean

​ @Bean:注释用于方法实例化、配置和初始化要由SpringIoc容器管理的对象,对应于XML文件中的

​ 指定初始化和销毁回调方法@Bean(initMethod="init")和@Bean(destoryMethod="cleanup")

​ @scope:指定Bean的作用域,例如@Scope("prototype")

​ @import:注释允许从另一个配置类加载@bean定义

​ @Conditional:能根据一定条件进行判断,满足条件就给容器注入Bean

整合Spring-test5

​ @SpringJunitConfig(locations = {"classpath:xml文件"}):指定XML配置文件

​ @SpringJunitConfig(Value = {BeanConfig.class}):指定配置类

SpringAOP注解

​ @Aspect:表示这个类是一个切面类

​ @Before("execution(切点表达式)"):声明当前方法是前置通知方法

​ @AfterReturning("execution(切点表达式)")

​ @AfterThrowing("execution(切点表达式)")

​ @After("execution(切点表达式)")

​ 上述三个注解的参数:

​ value:切点表达式,例如:"execution(切点表达式)"

​ returning:获取方法返回值

​ throwing:获取目标方法派出的异常对象

​ @pointcut("execution(切点表达式)"):在一个方法上使用注解,其他的注解可以通过对该注解作用的方法进行调用实现切入点表达式的重用

​ 环绕通知:对应整个try...catch...finally结构

​ @Around

​ 作用于配置类上:

​ @EnableAspectJAutoProxy("execution(切点表达式)"):作用等同于aop:aspect-autoproxy/配置类上开启Aspectj注解支持

事务

​ @Transactional:声明方法为一个事务

事务属性:

​ 只读属性:readOnly,默认值为false,

​ 超时时间属性:timeout,默认值为-1

​ 事务异常:

​ 1、默认情况:只针对运行时异常回滚,编译时异常不回滚

​ 2、设置回滚异常:rollbackFor属性:指定哪些异常才是回滚异常,默认是RuntimeException和Error

​ 3、设置不会滚异常:在默认设置和已有设置的基础上,再指定一个异常,碰到它不会回滚noRollbackFor

​ 4、事务的隔离级别:

​ 5、事务的传播行为:

相关推荐
会编程的吕洞宾12 分钟前
Spring Boot多环境配置实战 配置文件加载顺序与切换不再翻车
java·后端
额鹅恶饿呃15 分钟前
随着CentOS官方停服的时间越来越久,大量仍在使用CentOS7的企业和运维从业者
java·python·算法·c#·ruby
秋名RG20 分钟前
Java 异常处理全攻略:从入门到实战(JDK 21 版)
java·开发语言
SQL-First布道者29 分钟前
我为什么把 MyBatis 从项目中删了?
java·spring·tomcat·mybatis·mybatis plus·spring jdbc
公爵爱学习32 分钟前
无人机多点导航笔记
java·前端·笔记
萧瑟余晖1 小时前
Java深入解析篇五十五之Unsafe 机制详解
java
kakawzw1 小时前
mybatis源码笔记1——JDBC和整体架构
java·mybatis
sunshine22 girl1 小时前
Java学习一 环境配置1 安装JDK,配置环境变量
java·开发语言·学习
秋饼1 小时前
Spring AI Session API 深度实战:从 ChatMemory 平滑迁移到事件溯源的企业级短期记忆
java·ai·技术分享·后端开发
QCodingDev1 小时前
Spring AI 2.0企业级RAG实战:引用校验、无依据拒答与知识治理怎么做?
java·人工智能·spring·ai