本篇文章给大家谈谈注解实现接口调用量,以及后端接收参数的注解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享注解实现接口调用量的知识,其中也会对后端接收参数的注解进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
接口请求的一些注解使用笔记
1.@Controller定义控制器类
注解实现接口调用量,再使用注解@RequestMapping方法处理请求,完成映射关系。
2.@RestController等价于@Controller加上@ResponseBody
3.@PathVariable获取URI中
注解实现接口调用量的变量为参数。
1.假设接口请求所需要
注解实现接口调用量的参数id为123123这种情况下接口请求路径为127.0.0.1:8080/product/123123
这里需要使用 到@RequestMapping,SpringBoot中 提供了比较简洁的写法
@GetMapping
注解实现接口调用量:处理 get请求
@PostMapping:处理post请求
@DeleteMapping:处理删除请求
@PutMapping:处理修改请求
2.获取路径中的参数
这里的接口请求参数是靠=拼接的
如果请求参数usernameValue,那么完整的请求地址为
127.0.0.1:8080/adduser?username=usernameValue
3.接收路径中的json对象
实际的实现
4.通过HttpServletRequest接收参数
5.@RequestBody接收json数据
6.上传文件,这里唯一的易忽略的点是上传文件的时候需要判断所在文件路径是否存在,判断文件是否存在,如果不存在就创建它们。
验证器Hibernate-validator当前(2022.03.15)需要在pom.xml中添加一下依赖
一个神奇的功能,自定义注解类
接口文件MyCustomConstraint,注意这里如果是idea创建的Interface,前面会少个@符号,请对照自己添加
还有验证的类MyCustomConstraintValidator
@MyCustomConstrain已经被定义,接下来看如何使用
1.创建实体Usr
2.验证控制器TestValidator的实现
这里的addAttribute方法和addFlashAttribute的区别是前者将参数拼接到url后面,后者不会将参数拼接到url后面,而是将参数暂存在session中
3.视图form.html的实现,注意这里的"*{name}"可能会有底部红色波浪线提示报错,处理方法是将xmlne:th=""里面的www.去掉
视图结果results.html实现
1.错误码枚举YZCode enum
2.返回类YZResponse
使用:
如何通过注解实现接口api请求
@ResponseBody
@RequestMapping("/getBusWaiting")
@AppInterface(value="获取候车信息",group="test",order=1,params={
@InterfaceParam(name="lineName",desc="线路名称",testValue="B2"),
@InterfaceParam(name="isUpDown",desc="上下行标识",testValue="1"),
@InterfaceParam(name="stationNum",desc="站序",testValue="0"),
@InterfaceParam(name="len",desc="长度",testValue="700")
})
public AppResponse getBusWaitingInfo(String lineName,Integer isUpDown,Integer stationNum,Integer len){
AppResponse result = new AppResponse();
return result;
}
在Java接口的实现类中如何调用这个接口中定义的变量?
class A{int num=10;
public int getNum() {
return num;
}
} //定义父类
interface B {int num=1;} //定义接口
public class C extends A implements B{
public static void main(String[] args){
C c=new C();
System.out.println(c.getNum());
System.out.println(B.num);
}
}
因为接口里面的i是常量
注解实现接口调用量,就如楼上的所说,
你要访问,因为随便哪个在接口里的常量
都是静态的,可以通过类名即B.num调用,而
在类里面定义的就不同,你可以专门写一个方法
来取值
注解实现接口调用量!你想直接调用接口和类中的同名num是
做不到的!
java注解是怎么实现的
注解的使用一般是与java的反射一起使用,下面是一个例子
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
自定义注解及其应用
1)、定义一个最简单的注解
public @interface MyAnnotation {
//......
}
2)、把注解加在某个类上:
@MyAnnotation
public class AnnotationTest{
//......
}
以下为模拟案例
自定义注解@MyAnnotation
1 package com.ljq.test;
2
3 import java.lang.annotation.ElementType;
4 import java.lang.annotation.Retention;
5 import java.lang.annotation.RetentionPolicy;
6 import java.lang.annotation.Target;
7
8 /**
9 * 定义一个注解
10 *
11 *
12 * @author jiqinlin
13 *
14 */
15 //Java中提供了四种元注解,专门负责注解其他的注解,分别如下
16
17 //@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:
18 //RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
19 //RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)
20 //RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息
21
22 //@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括
23 //ElementType.CONSTRUCTOR: 构造器声明
24 //ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
25 //ElementType.LOCAL_VARIABLE: 局部变量声明
26 //ElementType.METHOD: 方法声明
27 //ElementType.PACKAGE: 包声明
28 //ElementType.PARAMETER: 参数声明
29 //ElementType.TYPE: 类、接口(包括注解类型)或enum声明
30
31 //@Documented将注解包含在JavaDoc中
32
33 //@Inheried允许子类继承父类中的注解
34
35
36 @Retention(RetentionPolicy.RUNTIME)
37 @Target({ElementType.METHOD, ElementType.TYPE})
38 public @interface MyAnnotation {
39 //为注解添加属性
40 String color();
41 String value() default "我是林计钦"; //为属性提供默认值
42 int[] array() default {1, 2, 3};
43 Gender gender() default Gender.MAN; //添加一个枚举
44 MetaAnnotation metaAnnotation() default @MetaAnnotation(birthday="我的出身日期为1988-2-18");
45 //添加枚举属性
46
47 }
注解测试类AnnotationTest
1 package com.ljq.test;
2
3 /**
4 * 注解测试类
5 *
6 *
7 * @author jiqinlin
8 *
9 */
10 //调用注解并赋值
11 @MyAnnotation(metaAnnotation=@MetaAnnotation(birthday = "我的出身日期为1988-2-18"),color="red", array={23, 26})
12 public class AnnotationTest {
13
14 public static void main(String[] args) {
15 //检查类AnnotationTest是否含有@MyAnnotation注解
16 if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)){
17 //若存在就获取注解
18 MyAnnotation annotation=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
19 System.out.println(annotation);
20 //获取注解属性
21 System.out.println(annotation.color());
22 System.out.println(annotation.value());
23 //数组
24 int[] arrs=annotation.array();
25 for(int arr:arrs){
26 System.out.println(arr);
27 }
28 //枚举
29 Gender gender=annotation.gender();
30 System.out.println("性别为:"+gender);
31 //获取注解属性
32 MetaAnnotation meta=annotation.metaAnnotation();
33 System.out.println(meta.birthday());
34 }
35 }
36 }
枚举类Gender,模拟注解中添加枚举属性
1 package com.ljq.test;
2 /**
3 * 枚举,模拟注解中添加枚举属性
4 *
5 * @author jiqinlin
6 *
7 */
8 public enum Gender {
9 MAN{
10 public String getName(){return "男";}
11 },
12 WOMEN{
13 public String getName(){return "女";}
14 }; //记得有“;”
15 public abstract String getName();
16 }
注解类MetaAnnotation,模拟注解中添加注解属性
1 package com.ljq.test;
2
3 /**
4 * 定义一个注解,模拟注解中添加注解属性
5 *
6 * @author jiqinlin
7 *
8 */
9 public @interface MetaAnnotation {
10 String birthday();
11 }
spring常用注解作用与常用接口与后置处理器
从spring2.5之后注解实现接口调用量,spring注解驱动开发慢慢取代注解实现接口调用量了Spring注解实现接口调用量的xml配置文件的作用注解实现接口调用量,而且目前流行的SpringBoot开发也是基于spring注解驱动做扩展的,所以想要理解好SpringBoot,就必须掌握一些spring的注解驱动。
以前xml的做法是
现在使用spring注解的做法是
java8之后ComponentScan注册加注解实现接口调用量了@Repeatable(ComponentScans.class),可以直接在配置类上标注多个@Componentscan,在java8之前想配置多个@Componentscan扫描,需要用@ComponentScans
给容器注册组件(bean)的几种方式
1.包扫描+组件标注注解(@Service、@Controller、@Repository、@Componet),这种方式用于导入自己写的类
2.@Bean方式导入,常用入导入第三方包里面的类 默认bean id为导入执行的方法名
3.@Import方式导入(有三种用法),默认的bean id为全类名
4.通过FactoryBean(工厂bean)
-bean创建-初始化-销毁
applicationContextAeare和EmbeddedValueResolverAeare都是通过ApplicationContextAwareProcessor后置处理器来实现的
BeanFactoryPostProcessor是在bean定义信息加载完成后调用
BeanDefinitionRegistryPostProcessor是在bean定义信息将要加载时调用
先执行BeanDefinitionRegistryPostProcessor的实现类再执行BeanFactoryPostProcessor的实现类
创建bean的源码位置
org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization
-org.springframework.beans.factory.BeanFactory#getBean(java.lang.String, java.lang.Class<T)
--org.springframework.beans.factory.support.AbstractBeanFactory#createBean
---org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean
执行bean对象的实例化
-org.springframework.beans.factory.support.AbstractBeanFactory#createBean
给bean的属性赋值
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean
initializeBean方法主要做了三个操作1.循环执行后置处理器的的前置方法(applyBeanPostProcessorsBeforeInitialization)、2.再执行初始化方法(invokeInitMethods),3.再执行后置处理器的的后置方法(applyBeanPostProcessorsAfterInitialization)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#initializeBean(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)
关于注解实现接口调用量和后端接收参数的注解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
注解实现接口调用量的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于后端接收参数的注解、注解实现接口调用量的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~