【关于注解】

1.注解是什么
JDK5.0新增 --- 注解(Annotation),也叫元数据。与类、接口、枚举是在同一个层次,它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

2.注解的作用
不是程序本身,可以对程序作出解释,可以被其他程序读取(比如:编译器等)
注解还可以添加一些参数名 例如:@SuppressWarnings(value="unchecked")
格式:@+注解名
3.注解的由来
在注释之前(甚至之后),XML被广泛用于框架的配置,开发人员和架构师认为XML维护变得越来越麻烦。 他们想要某些东西可以与代码紧密耦合而不是XML,而XML与代码之间的耦合非常松散(在某些情况下,几乎是分开的)。

如果搜索“ XML与注释”,会发现很多有趣的争论。 有趣的一点是,引入了XML配置可以将配置与代码分开。 注解可以提供更大的便捷性,易于维护修改,但耦合度高,而 XML 相对于注解则是相反的。如今,大多数框架都将XML和注解结合使用,以充分利用两者的积极方面。

4.注解的分类(注解可以根据注解参数分为三大类)
标记注解: 没有参数的注解,仅用自身的存在与否为程序提供信息,如@Override注解,该注解没有参数,用于表示当前方法为重写方法。
代码:
@Target({TYPE,CONSTRUCTOR,METHOD})
public @interface MyAnnotation4 {
}
单值注解: 只有一个参数的注解,如果该参数的名字为value,那么可以省略参数名,如 @SuppressWarnings(value = “all”),可以简写为@SuppressWarnings(“all”)。
完整注解: 有多个参数的注解。
5、JDK内置的注解
@Override 定义在java.lang.Override中,只用于修辞方法,表示一个方法声明打算重写一个超类中的另一个方法声明

@Deprecated 添加此注解表示改方法不推荐使用,但可以使用

@SuppressWarnings:抑制编译时的警告信息

6、元注解
元注解作用:负责注释其他注解

 元注解有四个:

@Retention 用于描述注解的使用范围,应用到一个注解上的时候,解释说明了这个注解的的存活时间。

RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。  

RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。  

RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们

元注解实例代码:

@Target  表示需要在什么级别保存该注解信息,用于描述注解的生命周期(source<class<runtime)

source:源代码

runtime:运行时

ElementType.ANNOTATION_TYPE 可以给一个注解进行注解

ElementType.CONSTRUCTOR 可以给构造方法进行注解

ElementType.FIELD 可以给属性进行注解

ElementType.LOCAL_VARIABLE 可以给局部变量进行注解

ElementType.METHOD 可以给方法进行注解

ElementType.PACKAGE 可以给一个包进行注解

ElementType.PARAMETER 可以给一个方法内的参数进行注解

ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

@Document 这个元注解肯定是和文档有关。它的作用是能够将注解中的元素包含到 Javadoc 中去

@Inherited

@Inherited 是继承的意思,但是它并不是说注解本身可以继承,

而是说如果一个超类被 @Inherited 注解过的注解进行注解的话,

那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。

说的比较抽象。代码来解释。

代码:

@Inherited
 
@Retention(RetentionPolicy.RUNTIME)
 
@interface Test {}
 
 
 
@Test
 
public class A {}
 
public class B extends A {}
 
@Repeatable JDK1.8引入
 
Repeatable 自然是可重复的意思
代码:

@interface Persons {
 
    Person[]  value();
 
}
 
@Repeatable(Persons.class)
 
@interface Person{
 
    String role default "";
 
}
 
 
 
 
 
@Person(role="artist")
 
@Person(role="coder")
 
@Person(role="PM")
 
public class SuperMan{
 
 
 
}
除了以上这四(五个--》JDK1.8之后添加了一个)个,所有的其他注解全部都是自定义注解。

目录

1.注解是什么

2.注解的作用

3.注解的由来

4.注解的分类(注解可以根据注解参数分为三大类)

5、JDK内置的注解

6、元注解

8、注解的应用场景

9、Spring注释总结

在javaWeb中,Selvert开发有两种方式,一种是web配置,另一种是注解式开发

在spring框架就是一个典型的注解式开发

9、Spring注释总结
@Configuration 标识当前类是配置类

@ComponentScan 包扫描注解 扫描注解

@Bean 标识该方法的返回值交给Spring容器管理

@Scope 控制单例和多例

@Lazy 懒加载

@PostConstruct 初始化方法

@PreDestroy 销毁方法

@Component 将当前类未来的对象交给容器管理

@Autowired 按照类型进行注入

@Qualifier 按照名称进行注入

@Repository 标识持久层注解

@Service 标识Service层

@Controller 标识Controller层

@Value 为属性赋值

@PropertySource 加载指定路径下的配置文件

@Aspect 标识当前类是一个切面类

@Pointcut 用于定义切入点表达式 表达式写法4种

@EnableAspectJAutoProxy 让AOP的注解有效果

@Before AOP-前置通知

@AfterReturning AOP-后置通知

@AfterThrowing AOP-异常通知

@After AOP-最终通知

@Around AOP-环绕通知

@Order(1) //可以利用order关键字 实现AOP的排序 数字越小越先执行

@ResponseBody 将返回的数据转化为JSON串, 如果是字符串本身 原数据返回

@RequestMapping("/hello") 实现浏览器的请求路径与方法的映射

@PathVariable restFul结构,接收参数的注解

@GetMapping("") 只能接收GET请求类型

@DeleteMapping("") 只能接收DELETE请求类型

@PostMapping("") 只能接收POST请求类型

@PutMapping("") 只能接收PUT请求类型

@RestController 表示Controller类,同时要求返回值为JSON

@CrossOrigin 允许跨域访问

@RequestMapping 将公共的部分抽取

@Data lombok动态生成get/set/toString/equals/hashcode等方法

@Accessors(chain = true) 开启链式加载

@NoArgsConstructor 生成无参构造方法

@AllArgsConstructor 生成全参构造方法

@Mapper mybatis将当前的接口交给Spring容器管理. Map<类名小写,JDK动态代理对象>

@SpringBootTest 该注解的作用在进行代码测试时启动spring容器,之后动态的获取对象 注意包路径 主启动类的同包及子包中

@Param 将参数封装为Map集合

@Alisa 设置别名

@MapperScan Mybatis中扫描指定包路径的接口 为其创建代理对象.

@Insert Mybatis 新增操作注解

@Update Mybatis 修改操作注解

@Delete Mybatis 删除操作注解

@Select Mybatis 查询操作注解

@Transactional Spring中用来控制事务

@RestControllerAdvice Controller层的全局异常处理

@ExceptionHandler 按照某种异常类型进行拦截

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值