spring常用注解

1、@Order注解

@Order注解主要用来控制配置类的加载顺序 :@Order扩号中的数字越小数字越小,越先加载。

2、@Aspect注解

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

在spring AOP中业务逻辑仅仅只关注业务本身,将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

Aspect的注解主要重要是:把当前类标识为一个切面供容器读取

3、@Component注解

 @Component注解标注在类上,表明这个注解会作为组件类,标注Spring管理的Bean,使用@Component注解在一个类上,表示将此类标记为Spring容器中的一个Bean。

4、@Controller注解

Spring中最常用的一个注解,他的中文意思是控制的意思,该类代表控制器类(控制层/表现层),使用它标记的类就是一个SpringMVC的 Controller类,分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了 @RequestMapping 注解。

5、@RequestMapping注解

此注解和@Controller注解配套使用,在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置。其括号后面的参数应该是web端请求的路由,如:

@RequestMapping("/system/user")

6、@Autowired注解

@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在springboot,常用在引用与sevice层,如:

 @Autowired
 private ISysUserService userService;

7、@ResponseBody注解

@ResponseBody是作用在方法上的。

@ResponseBody的作用其实是将java对象转为json格式的数据。

@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】。如:

    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(SysUser user)
    {
        List<SysUser> list = userService.selectUserList(user); //获取查询
        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
        return util.exportExcel(list, "用户数据");
    }

8、@PostMapping注解

前端发起一个post的请求的路由

  @PostMapping("/importData")

9、@GetMapping注解

前端发一个get的请求路由,post 和get是两种不同的请求方式,简单的来说,get是从服务器获取数据,而post是向服务器发数据。其两种方式底层都是HTTP协议,本质没有什么区别。但是,两种还有很多区别,如前面所说的内容,另外get传送的数据量较少,安全比较低,可以被缓存和记录,但是POST由要传输数据,需要加密,安全性比较高。

   @GetMapping("/importTemplate")

10、@PutMapping注解

对应的是修改操作请求,由前端传来一个修改的URL映射

11、@DeleteMapping注解

对应的是删除操作请求,由前端传来一个删除的  URL映射

12、@Configuration注解

该注解是配置类注解,用于定义配置类,可以替代XML配置文件。功能:将想要的组件添加到容器中。该注解一般放在一个类的开始部分。

该注解中有一个或者多个@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContextAnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

@Configuration
public class SwaggerConfig
{}

13、@Value注解

通过@Value将外部的值动态注入到Bean中。

可以注入普通字符串、注入操作系统属性、注入表达式结果、注入URL路径、注入Bean属性、注入文件属性等等

 @Value("${swagger.enabled}")
 private boolean enabled;

14、@Bean注解

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。 产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。@Bean注解的另一个好处就是能够动态获取一个Bean对象,能够根据环境不同得到不同的Bean对象。

    @Bean
    public Docket createRestApi()
    {}

15、@SpringBootApplication注解

该注解是spring中最重要的注解之一,一个项目的启动,都需要从这里开始。点击该注解看源码。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {}

我们发现该主要是由三个注解构成,分别是@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan,由于每次 写三个注解很麻烦,所以将三个注解进行整合成一个注解。

@SpringBootConfiguration等同于@Configuration,带有spring的标志,是属于spring的一个配置类,需要加载某个IOC容器的配置类;

@EnableAutoConfiguration是开启自动配置功能。将所有符合自动配置条件的bean定义加载到IoC容器。

@ComponentScan 的功能自动扫描并加载符合条件的组件或 bean 定义,最终将这些 bean 定义加载到容器中。

@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。

@ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。

16、@ConfigurationProperties注解

在 SpringBoot 中,当想需要获取到application.properties配置文件数据时,除了可以用 Spring 自带的 @Value 注解外,SpringBoot 还提供了一种更加方便的方式:@ConfigurationProperties。只要在 Bean 上添加上了这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到 Bean 中。

例如在application.yml有如下配置文件:        

ruoyi:
  # 名称
  name: RuoYi
  # 版本
  version: 4.7.4
  # 版权年份
  copyrightYear: 2022
  # 实例演示开关
  demoEnabled: true
  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
  profile: D:/ruoyi/uploadPath
  # 获取ip地址开关
  addressEnabled: false

如果想获取yml里面的内容,此时就可以用@ConfigurationProperties注解

@Component
@ConfigurationProperties(prefix = "ruoyi")
//获取application.yml中的一些配置
public class RuoYiConfig
{
    /** 项目名称 */
    private static String name;

    /** 版本 */
    private static String version;

    /** 版权年份 */
    private static String copyrightYear;
}

17、@Aspect注解

作用是把当前类标识为一个切面供容器读取

18、@Before注解

在切点方法之前执行,与@Aspect注解配套使用

    @Before("@annotation(controllerDataScope)")
    public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable
    {
        clearDataScope(point);
        handleDataScope(point, controllerDataScope);
    }

19、 @After注解

在切点方法之后执行

20、 @AfterReturning 注解

切点方法返回后执行

21、@AfterThrowing注解

切点方法抛异常执行

22、@Around

属于环绕增强,能控制切点执行前,执行后,,用这个注解后,程序抛异常,会影响@AfterThrowing这个注解

23、@Pointcut注解

Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的

24、@EnableAspectJAutoProxy注解

在Spring中,如果不在配置类中添加@EnableAspectJAutoProxy,那么所有切面注解(如@After、@Before、@Around)是不生效的(springboot因为有自动配置,所以不需要开发人员手工配置@EnableAspectJAutoProxy)

25、@MapperScan注解

作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
添加位置:是在Springboot启动类上面添加.

26、@Mapper注解

使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。

如果觉得每个接口中添加@mapper注解麻烦,只需要在spring boot启动类或者spring boot配置类加上@MapperScan("mapper的包路径“)

MapperScan("com.iems.**.mapper")
public class ApplicationConfig
{
}

27、@PostConstruct注解

该注解不是spring中的注解,而是Java中的注解

@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。

通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:

Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)

该注解的功能:依赖注入完成后用于执行初始化的方法,并且只会被执行一次

28、@Excel注解

该注解是导出文件功能的一个注解,

    @Excel(name = "品牌名称")
    private String brandName;

name表示导出后,文件的列头的名称

29、@Service注解

该注解是spring中常用的注解的之一

@Service注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。

@Service
public class OucBrandServiceImpl implements IOucBrandService 
{}

在controller类中调用它,只需要将类注入接口即可

  @Autowired
  private IOucBrandService oucBrandService;

30、@RequiresPermissions注解

这个注解是用来权限验证的

 @RequiresPermissions("system:brand:export")

后面的参数是权限表里面的权限 

31、@RequiresAuthentication注解

 验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。

32、@Log铸就额

记录日志,是lombok为我们提供的日志模块,该注解是自定义的注解

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值