zoukankan      html  css  js  c++  java
  • Spring-boot 一些常用注解说明!

    @SpringBootApplication

    这个注解就是下面这一堆注解的组合,其中又一个注解就是ComponentScan,这个注解的作用是扫描及注入对应的bean。而默认的扫描路径是由@SpringBootApplication注释的类决定的。

    比如一个Application.class的路径是com.xxx.web 那么ComponentScan扫描的路径就是com.xxx.web.*,所以Application.class这个文件的位置至关重要,它的位置关系着扫描路径,如果在com.xxx.service

    中写了一个controller的话 那么该controller无法被扫描到,也就无法产生作用。

    当然也可以手动定义地址,在Application.class中手动的在@SpringBootApplication注解下面加上@ComponentScan(basePackages={com.xxx.*})手动的配置需要扫描的地址也行。

    个人偏向将Applicatio放在最外层的目录下,那么就能扫描到所有同级及子目录的文件了!!!

    @Target({ java.lang.annotation.ElementType.TYPE })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(excludeFilters = {
            @org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {
                    org.springframework.boot.context.TypeExcludeFilter.class }),
            @org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {
                    AutoConfigurationExcludeFilter.class }) })

    @RestController(作用范围·类):

     它是@Controller+@ResponseBody 注解的组合,它的好处在于当你的Controller中只是想返回json,或者对应的数据到前端页面时,直接用该注解标注整个类,那么就没必要在每个RequestMapping方法上都逐一再加一个ResponseBody注解了。

     但是它还有一个缺点,就是当你的Controller想返回一个具体页面时,比如return index.html 或者index.jsp, 那么使用RestController注解就会导致InternalResourceViewResolver视图解析的失效。即没办法返回到正确的页面,只能返回一个字符串index.jsp给页面。

       所以@RestController和@Controller这2个注解没有谁好谁坏,如果项目是前后端分离,那么整个项目就可以使用@RestController来实现,如果项目包含前端资源的解析那么 要选择性的使用2种注解!

    @Value

    该注解就是在项目启动的时候,将属性的值从application.properties(这个是系统默认的properties文件)中注入到对应的属性上。以@value("${xxx.xxx.xx}")这样的方式!

    如果想自己定义properties文件的话就需要用到@PropertySource(value="classpath:xxx.properties",encoding="utf-8")来配置额外的文件。

    @Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法,说特别也没有很特别,可能有些人对一个类中大量的set,get方法不感冒的时候就可以用这个注解减少

    代码量!!!!

    @NoArgsConstructor : 生成一个无参数的构造方法。
    @AllArgsContructor: 会生成一个包含所有变量,同时如果变量使用了NotNull 注释, 会进行是否为空的校验。

  • 相关阅读:
    C#写入系统日志(日志位置)
    vue element enter事件
    C#记一次配置文件的坑
    C#简单解决winfrom窗体打开时候闪动
    C#语言切换
    C#textbox允许换行
    C#中窗体边框隐藏
    C#背景图片自适应
    IOC的实现原理—反射与工厂模式
    终生学习
  • 原文地址:https://www.cnblogs.com/culushitai/p/8717350.html
Copyright © 2011-2022 走看看