java 注解

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被彻底卸载之前。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值