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、事务的传播行为:

相关推荐
阿蒙Amon19 小时前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
daidaidaiyu19 小时前
Spring IOC 源码学习 一文学习完整的加载流程
java·spring
Knight_AL19 小时前
Spring 事务传播行为 + 事务失效原因 + 传播行为为什么不用其他模式
数据库·sql·spring
2***d88519 小时前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端
五阿哥永琪19 小时前
Spring中的定时任务怎么用?
java·后端·spring
gelald19 小时前
AQS 工具之 CountDownLatch 与 CyclicBarry 学习笔记
java·后端·源码阅读
better_liang20 小时前
每日Java面试场景题知识点之-XXL-JOB分布式任务调度实践
java·spring boot·xxl-job·分布式任务调度·企业级开发
会游泳的石头20 小时前
一行注解防死循环:MyBatis 递归深度限制(无需 level 字段)
java·mybatis
q***o37620 小时前
Spring Boot环境配置
java·spring boot·后端
oMcLin20 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维