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注解的方法,这些方法将会被AnnotationConfigApplicationContext
或AnnotationConfigWebApplicationContext
类进行扫描,并用于构建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为我们提供的日志模块,该注解是自定义的注解