IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring 注解 -> 正文阅读

[Java知识库]Spring 注解

事务注解

使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional?便可

* @EnableTransactionManagement,会额外加载 4 个 bean
? * BeanFactoryTransactionAttributeSourceAdvisor 事务切面类
? * TransactionAttributeSource 用来解析事务属性
? * TransactionInterceptor 事务拦截器
? * TransactionalEventListenerFactory 事务监听器工厂
* @Transactional

核心

@Order

主要用来控制配置类的加载顺序,但并不影响bean本身实例化的顺序,因为实例化的顺序取决于依赖关系

切面

* @EnableAspectJAutoProxy
? * 会加载 AnnotationAwareAspectJAutoProxyCreator,它是一个 bean 后处理器,用来创建代理
? * 如果没有配置 @EnableAspectJAutoProxy,又需要用到代理(如事务)则会使用 InfrastructureAdvisorAutoProxyCreator 这个 bean 后处理器

组件扫描与配置类

* @Component

实现bean的注入,把这个类交给Spring管理

* @Controller

* @Service

* @Repository

@Repository.@Service.@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean

* @ComponentScan

根据定义的扫描路径,把符合扫描规则的类装配到spring容器中

* @Conditional?

作用是按照设定的条件进行判断,把满足判断条件的bean注册到Spring容器。

* @Configuration

? * 配置类其实相当于一个工厂, 标注 @Bean 注解的方法相当于工厂方法
? * @Bean 不支持方法重载, 如果有多个重载方法, 仅有一个能入选为工厂方法
? * @Configuration 默认会为标注的类生成代理, 其目的是保证 @Bean 方法相互调用时, 仍然能保证其单例特性
? * @Configuration 中如果含有 BeanFactory 后处理器, 则实例工厂方法会导致 MyConfig 提前创建, 造成其依赖注入失败,解决方法是改用静态工厂方法或直接为 @Bean 的方法参数依赖注入, 针对 Mapper 扫描可以改用注解方式

* @Bean

* @Import?

? * 四种用法

? ? ① 引入单个 bean

? ? ② 引入一个配置类

? ? ③ 通过 Selector 引入多个类

? ? ④ 通过 beanDefinition 注册器

? * 解析规则

? ? * 同一配置类中, @Import 先解析 ?@Bean 后解析
? ? * 同名定义, 默认后面解析的会覆盖前面解析的
? ? * 不允许覆盖的情况下, 如何能够让 MyConfig(主配置类) 的配置优先? (虽然覆盖方式能解决)
? ? * 采用 DeferredImportSelector,因为它最后工作, 可以简单认为先解析 @Bean, 再 Import

* @Lazy

? * 加在类上,表示此类延迟实例化、初始化
? * 加在方法参数上,此参数会以代理方式注入

* @PropertySource

加载指定的属性文件(*.properties)到 Spring 的 Environment 中

依赖注入

* @Autowired

常用来作属性的注入,可以作用在构造方法、普通方法、字段、注解、参数上。
* @Qualifier

限定描述符除了能根据名字进行注入,更能进行更细粒度的控制如何选择候选者
* @Value

mvc mapping

* @RequestMapping,可以派生多个注解如 @GetMapping 等

是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。

mvc rest

* @RequestBody

@RequestBody@RequestParam主要是用来接收前端传给后端的json数据。一般来说,@RequestBody注解一般使用在post请求中,因为前端将json数据放在了请求体中。在后端接收的方法里@RequestBody可以和@RequestParam同时使用,但一个方法里,@RequestBody只能有一个,@RequestParam可以有多个。@RequestParam使用在GET请求方式中,可以接收普通元素、数组、集合、对象等。

* @ResponseBody,组合 @Controller => ?@RestController

将java对象转为json格式的数据。
* @ResponseStatus

主要作用就是为了改变HTTP响应的状态码

mvc 统一处理

* @ControllerAdvice,组合 @ResponseBody => @RestControllerAdvice

@ControllerAdvice就是@Controller 的增强版。最常见的使用场景就是全局异常处理。比如文件上传大小限制的配置,如果用户上传的文件超过了限制大小,就会抛出异常
* @ExceptionHandler

mvc 参数

* @PathVariable

映射URL绑定的占位符

@RequestMapping("/user/{id}")
public String testPathVariable(@PathVariable("id") String id){
    System.out.println("路径上的占位符的值="+id);
    return "success";
}

mvc ajax

* @CrossOrigin

解决跨域请求

boot auto

* @SpringBootApplication

是个复合注解,包含的三个注解,@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan
* @EnableAutoConfiguration

开启自动配置
* @SpringBootConfiguration

声明当前类是一个配置类,然后Spring会自动扫描到添加

boot condition

* @ConditionalOnClass,classpath 下存在某个 class 时,条件才成立
* @ConditionalOnMissingBean,beanFactory 内不存在某个 bean 时,条件才成立
* @ConditionalOnProperty,配置文件中存在某个 property(键、值)时,条件才成立

boot properties

* @ConfigurationProperties,会将当前 bean 的属性与配置文件中的键值进行绑定
* @EnableConfigurationProperties,会添加两个较为重要的 bean
? * ConfigurationPropertiesBindingPostProcessor,bean 后处理器,在 bean 初始化前调用下面的 binder
? * ConfigurationPropertiesBinder,真正执行绑定操作

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:38:26  更:2022-09-30 00:40:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 -2025/2/26 2:24:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码