首页 > 编程语言 >java 注解

java 注解

时间:2022-12-07 15:04:54浏览次数:47  
标签:java Spring Controller bean 修饰 注解 方法


1.声明bean

 

@Component  组件,没有明确的角色

@Controller  在展现层使用,控制器的声明(Controller层)

@Service  在业务逻辑层使用(service层)

@Repository  在数据访问层使用(dao层)

@Mapper Mybatis注解,可替代Repository

@Component (@Controller, @Service, @Repository)用于自动检测和使用​​类路径​​扫描自动配置bean。注释类和bean之间存在隐式的一对一映射(即一个类对应一个bean)。

​@Bean​

用于显式声明单个bean,而不是让Spring像上面那样自动执行它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。

2.注入bean

@Autowired  by type  Spring

@Resource  by name  JSR-250

@Qualifier  @Autowired @Qualifie("NAME")  Spring

@Inject  @Inject @Named("NAME")  JSR330

注解在属性上

@Autowired:先byType再byName,默认情况下它要求依赖对象必须存在(可以设置它required
属性为false)

@Resource:先byName再byType,当指定@Resource name属性时,只会byName

@Qualifier:当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可以使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean 来消除歧义。

@Required
这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException
 

3.java配置类

@Configuration 声明当前类为配置类,相当于xml形式的Spring配置

@Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式

@ComponentScan 用于对Component进行扫描,相当于xml中的

@WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,可以替代这两个注解

@ConfigurationProperties 将属性变为可配置的

4.切面(AOP)

@Aspect 声明一个切面(类上)

@After 在方法执行之后执行(方法上)

@AfterReturning
@Before 在方法执行之前执行(方法上)
@Around 在方法执行之前与之后执行(方法上)

@PointCut 声明切点

5.请求

5.0 RequestMapping(path=" ",  method=" ")

注解实现接收http请求的json数据,将json转换为java对象

get,post

类级别:映射请求的 URL
方法级别:映射 URL 以及 HTTP 请求方法

5.0 springboot中的简写

@GetMapping

@PostMapping

@DeleteMapping

@PutMapping

5.1 Request:

写在方法的参数上,@RequestBody @RequestParam @PathVariable 都是用来处理请求参数映射的,只是涉及的场景不同

@RequestParam(name=" ",  required=" ", defaultValue=" ")

/student?current=1&limit=10

get, post

Content-Type:  application/x-www-form-urlencoded

@RequestBody

注解实现将conreoller方法返回对象转化为json对象响应给客户

post

Content-Type: application/json

适用于返回类型json的情况

@PathVariable

/student/123

@PathParam

类似@PathVariable, 不同的是@PathVariab在没有对应属性时会是一个null值,不会报错

5.2 Response:

写在方法上

@ResponseBody

@RestController

@RestController = @Controller + @ResponseBody

返回JSON 或 XML 形式数据

6.事务

@Insert

@Select

@Update

@Delete

以上4个写在Mapper接口上

@Options 声明sql相关的其他信息,如:自增

@Transactional 声明事务,隔离级别,传播机制

7.元注解

常用的元注解:
@Target

注解作用域

@Retention

注解作用时间

@Document

注解是否写入文本

@Inherited

标有该注解的类的子类自动继承该注解

- 如何读取注解:
Method.getDeclaredAnnotations​()
Method.getAnnotation​(Class<T> annotationClass)
 

8. 异常处理

@ControllerAdvice

统一处理异常
- 用于修饰类,表示该类是Controller的全局配置类。
- 在此类中,可以对Controller进行如下三种全局配置:
异常处理方案、绑定数据方案、绑定参数方案。

@RestControllerAdvice = @Responsbody + @ControllerAdvice
@ExceptionHandler
- 用于修饰方法,该方法会在Controller出现异常后被调用,用于处理捕获到的异常。
@ModelAttribute
- 用于修饰方法,该方法会在Controller方法执行前被调用,用于为Model对象绑定参数。
@DataBinder
- 用于修饰方法,该方法会在Controller方法执行前被调用,用于绑定参数的转换器。

9.其他

@Scope  设置Spring容器如何新建Bean实例   @Bean(NAME)@Scope(Value)

其设置类型包括:

Singleton (单例,一个Spring容器中只有一个bean实例,默认模式
Protetype (每次调用新建一个bean)
Request (web项目中,给每个http request新建一个bean)
Session (web项目中,给每个http session新建一个bean)
GlobalSession(给每一个 global http session新建一个Bean实例)

@Value  为属性注入值  

@Value(VALUE)

String name;

@Async  在实际执行的bean方法使用该注解来申明其是一个异步任务(方法上或类上所有的方法都将异步,需要@EnableAsync开启异步任务)

@Scheduled  来申明这是一个任务

@RunWith  运行器,Spring中通常用于对JUnit的支持

@Primary  自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。

@Named  和Spring的@Component功能相同。@Named可以有值,如果没有值生成的Bean名称默认和类名相同。

@Valid 不分组校验

@Validated 对javabean的校验, 对使用@RequestParam方式接收参数方式校验使用@Validated

分组检验

@Param 用于给参数取别名,如果只有一个参数,并且在<if>里使用,则必须加别名

@CookieValue 声明cookie参数

Springboot 注解

  • @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能;
  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置的功能:
  • @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
  • @ComponentScan:Spring组件扫描
  • @ImportResource 注解导入老 Spring 项目配置文件

java自带注解

  • @Override​:表示当前的方法定义将覆盖父类中的方法
  • @Deprecated​:表示代码被弃用,如果使用了被@Deprecated注解的代码则编译器将发出警告
  • @SuppressWarnings​:表示关闭编译器警告信息
  • @Target: ​​描述注解的使用范围(即:被修饰的注解可以用在什么地方)
  • @Retention: ​​描述注解保留的时间范围(即:被描述的注解在它所修饰的类中可以被保留到何时)
  • @Documented: ​​描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息
  • @inherited: ​​被它修饰的Annotation将具有继承性。如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解

@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。

@PostConstruct

     被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。

Constructor >> @Autowired >> @PostConstruct

@PreDestroy

     被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。

java 注解_xml

标签:java,Spring,Controller,bean,修饰,注解,方法
From: https://blog.51cto.com/u_15905340/5919337

相关文章

  • Java GC
    0.GC  GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是......
  • java对象的访问
    Java程序需要通过JVM栈上的引用访问堆中的具体对象。对象的访问方式取决于JVM虚拟机的实现。目前主流的访问方式有句柄和直接指针两种方式。指针:指向对象,代表一......
  • java单例模式
    1.饿汉式2.懒汉式2.1 双重检查2.2 静态内部类2.3 枚举......
  • java虚拟机运行时数据区域
    一.线程私有1.程序计数器(ProgramCounterRegister) 当前线程所执行字节码的行号。2. Java虚拟机栈(JavaVirtualMachineStacks)Java方法执行的内存模型:每个方法在......
  • java面试(JVM)
     1. JMM的两个语义1)happensbefore:一个线程前一个操作对后一个操作可见,具有传递性。确保多线程执行程序结果不变。2)asifserial:无论怎么重排序,程序执行结果不变,即不......
  • Java语言标识符的命名规范(超详细讲解)
    前言在上一篇文章中,壹哥带领大家开始编写了第一个Java案例,在我们的cmd命令窗口中输出了”HelloWorld“这句话。并且我还给大家留了一个小作业,你做出来了吗?但是在上......
  • java拼接逗号的四种方式
    1.使用String.joinList<String>list=newArrayList<>(Arrays.asList("1","2","3","4","5"));Stringresult=String.join(",",list);System.out.println(result);......
  • Java数组和字符串的相互转换
    Java数组和字符串的相互转换字符串转换为数组JavaString类中的toCharArray()方法将字符串转换为字符数组,具体代码如下所示。Stringstr="123abc";char[]arr=......
  • JavaScript Promises, async/await
    newPromise()的时候,传一个executor给Promise.letpromise=newPromise(function(resolve,reject){//thisfunctionwillexecutesimmediately})这个函数......
  • JavaWeb商城项目的商品点赞功能模块的开发详
    一.JavaWeb商城项目的商品点赞功能开发过程记录1.1项目背景在完成内蒙古科技大学JavaWeb课程的大作业之后,本着练习的态度继续的写了一个功能:点赞功能。本需求看似简单,难......