百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

java从jpa到ribbon,hystrix的注解发展史

ccwgpt 2025-04-09 14:35 33 浏览 0 评论

java jpa注解说明:

@Entity声明类为实体。

@Table声明表名。

@Entity和@Table一般一起使用,如果表名和实体类名相同,那么@Table可以省略。

@Basic指定非约束明确的各个字段。

@Embedded用于注释属性,表示该属性的类是嵌入类。( @Embeddable 用于注释Java类的,表示类是嵌入类)。

@ld指定的类的属性,一个表中的主键。

@GeneratedValue指定如何标识属性可以被初始化。如@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "repair_seq"):表示主键生成策略是sequence。还有Auto、ldentity、 Native 等。

@Transient表示该属性并非一个数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,即它是不持久的,为虚拟字段。

@Column指定持久属性,即字段名。若字段名与列名相同,则可以省略。如:@Column(length=11,name="phone",nullable=false,columnDefinition = "varchar(11) unique comment'电话号码'")

@SequenceGenerator指定在 @SequenceGenerator 注解中指定的属性的值。

它创建一个序列。

@TableGenerator在数据库生成一张表来管理主键生成策略。

@AccessType这种类型的注释用于设置访问类型。如果设置@AccessType(FIELD),则可以直接访问变量,并且不需要使用Gtter和Stter方法,但必须为public属性。如果设置@AccessType(PROPERTY),则通过Getter和Setter方法访问Entity的变量。

@UniqueConstraint指定的字段和用于主要或辅助表的唯一约束。

@ColumnResult可以参考使用select子句的SQL查询中的列名。

@NamedQueries指定命名查询的列表。

@NamedQuery指定使用静态名称的查询。

@Basic指定实体属性的加载方式。如@Basic(fetch=FetchType.LAZY)。

springboot中的常用注解说明:

@SpringBootApplication
这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。

@EnableAutoConfiguration

允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。

如:当前类路径下有 Mybatis 这个 JAR 包,MybatisAutoConfiguration 注解就能根据相关参数来配置 Mybatis 的各个 Spring Bean。

@EnableAutoConfiguration实现的关键在于引入了
AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:


 ● 从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;

 ● 去重,并将exclude和excludeName属性携带的类排除;

 ● 过滤,将满足条件(@Conditional)的自动配置类返回;

@Configuration

用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

@ComponentScan

组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。

@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。

@Repository

用于标注数据访问组件,即DAO组件。

使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

@Service

一般用于修饰service层的组件

@RestController

用于标注控制层组件(如struts中的action),表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器;它是@Controller和@ResponseBody的合集。

@ResponseBody

表示该方法的返回结果直接写入HTTP response body中

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

@Component

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Bean

相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

@AutoWired

byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

当加上(required=false)时,就算找不到bean也不报错。

@Qualifier

当有多个同一类型的Bean时,可以用@Qualifier("name")来指定。与@Autowired配合使用

@Resource(name="name",type="type")

没有括号内内容的话,默认byName。与@Autowired干类似的事。

@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解;提供路由信息,负责URL到Controller中的具体函数的映射,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestParam

用在方法的参数前面。例:

@RequestParam String a =request.getParameter("a")。

@PathVariable

路径变量。参数与大括号里的名字一样要相同。例:

RequestMapping("user/get/mac/{macAddress}")

public String getByMacAddress(@PathVariable String macAddress){

  //do something;

}

@Profiles

Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。

任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。

@Configuration

@Profile("prod")

public class ProductionConfiguration {

// ...

}

@ConfigurationProperties

Spring Boot可使用注解的方式将自定义的properties文件映射到实体bean中,比如config.properties文件。

SpringCloud常用注解说明:

@Controller 控制层,里面有多个连接

@Service 业务层,一般对于接口和实现

@Qualifier 如果一个接口有多个实现,那么注入时候加上唯一标示

@Repository 一般的dao层

@Autowired 自动注入依赖

@Resource bean的注入,同Autowired 有相同的功能。

说明:

共同点:@Resource和@Autowired都可以作为注入属性的修饰,在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用。

不同点:

@Resource是Java自己的注解,@Resource有两个属性是比较重要的,分别是name和type;Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

@Autowired是spring的注解,是spring2.5版本引入的,Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier或@Primary注解一起来修饰。

@Component定义其它组件(比如访问外部服务的组件)

@RequestMapping (value=’’,method={RequestMethod。GET或者POSt})绑定url

@RequestParam (value=’’ required=false)绑定参数,将客户端请求中的参数值映射到相应方法的参数上;

@ModelAttribute 一般用于controller层,被注解的方法会在所以mapping执行之前执行,并且可以绑定参数到Model model里面。

@Transactional (readOnly=true)注解式事务

@
TransactionalEventListener用于配置事务的回调方法,可以在事务提交前、提交后、完成后以及回滚后几个阶段接受回调事件。

@Value(“${}”)可以注入properties里面的配置项

@ControllerAdvice 是spring3提供的新注解

@ExceptionHandler 如果在controller方法遇到异常,就会调用含有此注解的方法。

@InitBinder 一般用于controller 可以将所以form 讲所有传递进来的string 进行html编码,防止xss攻击,比如可以将字符串类型的日期转换成date类型

@EnableCaching 注解自动化配置合适的缓存管理器。

@EnableWebSecurity 注解开启spring security的功能,集成
websercrityconfigureadapter。

@SringBootApplication相当于@configuration,@EnableAutoConfiguation @ComponentScan三个注解合用。

@EnableDiscoveryclient 注册应用为Eureka客户端应用,以获得服务发现的能力

@EnableAdminServer 使用admin监控应用。

@EnableEurekaClient配置本应用将使用服务注册和服务发现,注意:注册和发现用这个注解。

@EnableEurekaServer 启动一个服务注册中心

@EnableHystrix表示启动断路器,断路器依赖于服务注册和发现。

@HystrixCommand注解方法失败后,系统将西东切换到fallbackMethod方法执行。指定回调方法

@EnableAutoConfiguration spring boot自动配置,尝试根据你添加的jar依赖自动配置你的spring应用。

@ComponentScan 表示将该类自动发现并注册bean 可以自动收集所有的spring组件

@Comfiguration 相当于传统的xml配置文件

@Import 导入其他配置类

@ImportResource用来 加载xml配置文件

@FeignClient注解中的fallbank属性指定回调类

@RestController 返回json字符串的数据,直接可以编写RESTFul的接口;

@CrossOrigin 可以处理跨域请求,让你能访问不是一个域的文件;

@ApiOperation 首先@ApiOperation注解不是Spring自带的,它是是swagger里的注解@ApiOperation是用来构建Api文档的@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”;

@SpringBootApplication 申明让spring boot自动给程序进行必要的配置,等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan;

@RefreshScope 如果代码中需要动态刷新配置,在需要的类上加上该注解就行。但某些复杂的注入场景下,这个注解使用不当,配置可能仍然不动态刷新;

@FeignClient springboot调用外部接口:声明接口之后,在代码中通过@Resource注入之后即可使用。@FeignClient标签的常用属性如下:name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现

url: url一般用于调试,可以手动指定@FeignClient调用的地址decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException

configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contractfallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口

fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码path: 定义当前FeignClient的统一前缀

@EnableFeignClients 开启Spring Cloud Feign的支持

@EnableCircuitBreaker 开启断路器功能

@LoadBalanced 开启客户端负载均衡

@WebAppConfiguration 开启Web 应用的配置,用于模拟ServletContext

@RibbonClient,这个注解用来为负载均衡客户端做一些自定义的配置,可以进一步配置或自定义从哪里获取服务端列表、负载均衡策略、Ping也就是服务鉴活策略等等

@PathVariable 获取参数。

@JsonBackReference 解决嵌套外链问题。

@
RepositoryRestResourcepublic 配合
spring-boot-starter-data-rest使用

相关推荐

公司组织架构及部门职责#管理制度 #薪酬绩效 #组织架构

...

终于把“公司组织架构与管理部岗位配置”整理好了,拿来即用!

...

老板看完这份“公司组织架构详解”就解放了!

...

丨公司丨公司大架构整理汇总

注:本文转自团队成员原创作品,特此鸣谢(公号:法海图鉴)今日话题公司大架构整理背景介绍经过前几期话题对各种企业类型的介绍,想必大家已经有了初步认识。之后我将带着大家开启对公司的深入了解。本期...

图解物理--八年级物理下册最全知识框架导图

第七章力1力2弹力3重力第八章运动和力1牛顿第一定律2二力平衡3摩擦力第九章压强1压强2液体压强3大气压强4流体压强与流速的关系第十章浮力1浮力2阿基米德原理3物体的浮沉条件及应用第十一章功...

八年级上册生物,思维导图,期末高分必备资料,家长收藏

这是八年级上册生物的思维导图,孩子在背诵知识点的时候,可以看一下知识点在导图中的位置,形成对知识点整体的把握,有助于学生拿高分,特别是图片中带红色星星的部分,更是要注意背诵,是重点内容。家长可以把图片...

2019政府工作报告精华,这张思维导图里全都有

每经记者:李可愚每经编辑:陈星每日经济新闻

图解薪酬体系结构设计

...

司考复习独家总结!一张图总结行政法知识结构体系

作为三大实体法之一,行政法的分值在60分左右,行政法在司法考试中一直比较平稳常规,没有偏题怪题,还是比较容易得分的。小编要提醒大家,在3月之前要把三大实体法学习一遍。下图是厚大在线360导学师小周总结...

一图读懂香港国安新架构:各职位人选公布 有官员曾强硬喊话乱港分子

实用干货!高中物理框架图,让零碎知识“串联”起来

高中物理学习一定要抓好逻辑结构大框架!了解整个知识框架体系后,更易抓住骨干知识,干掉重难知识点~今天给大家分享高中物理的框架图同学们赶紧收藏起来吧!力学知识结构图光学知识结构图热学、原子物理知识结构图...

254m超高层办公楼型钢砼框架-核心筒结构图

高度类别:超高层建筑钢筋混凝土结构:框架,框架核心筒钢结构:钢框架建筑功能:办公包含:办公楼57层(-3层)254.150m钻孔灌注桩桩+筏板型钢混凝土框架-钢筋混凝土核心筒西裙房2层(-...

砖混结构与框架结构,究竟有何区别?千万别被坑!

现在买房装修的人最怕啥?不是价格高,而是房子不安全!两种主流建筑结构,砖混靠墙,框架靠柱子,选错了隔墙都可能要命。简单说,砖混便宜但别碰高层,框架贵点但能保命。砖混那些承重墙根本不能拆,想砸墙改个开放...

大师一百——高中化学必考:《元素周期律》考点框架图

今天大师给大家带来的是高中化学的《元素周期律》考点框架图,高中的同学必须牢记于心,这种重要的考点,考试是一定会考的!化学大师...

需求分析框架图

需求分析框架图

取消回复欢迎 发表评论: