Spring-@Order注解

一、@Order

注解@Order的作用是定义Spring容器加载Bean的顺序

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Documented
public @interface Order {
	/**
	 * 默认最低优先级
	 */
	int value() default Ordered.LOWEST_PRECEDENCE;
}

二、@Order使用

简单使用一下@Order测试效果

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(1)
public class ComponentOne{
    ComponentOne(){
        System.out.println("Component One");
    }
}
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(2)
public class ComponentTwo{
    ComponentTwo(){
        System.out.println("Component Two");
    }
}
@Component
@Order(3)
public class ComponentThree{
    ComponentThree(){
        System.out.println("Component Three");
    }
}

项目启动后执行结果:

Component One
Component Three
Component Two

@Order没生效、还是默认的加载顺序、原因还需研究

三、实现CommandLineRunner接口

实现CommandLineRunner接口,在项目启动后执行,实现功能的代码放在实现的run方法中。

import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(1)
public class ComponentOne implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("Component One");
    }
}
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(2)
public class ComponentTwo implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("Component Two");
    }
}
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(3)
public class ComponentThree implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("Component Three");
    }
}

项目启动后执行结果:

Component One
Component Two
Component Three

@Order根据顺序生效

关于@Order还有问题需要研究

热门文章

暂无图片
编程学习 ·

SpringBoot解决跨域

第一种:书写解决跨域的类public class AccessControlAllowOriginFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) …
暂无图片
编程学习 ·

Linux批量修改文件名

#!/bin/bash #生成文件的list文本,复制文件 for file in `cat val.txt` do cp val1/$file* val/ done#当前文件夹下重命名 for file in val/*-1.png; do mv "$file" "${file%-1.png}.png"; done
暂无图片
编程学习 ·

window.performance.navigation.type

performance.navigation.type(该属性返回一个整数值,表示网页的加载来源,可能有以下4种情况):0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载,相当于常数performance.navigation.TYPE_NAVIGATE。1:网页通过“重新加载”按钮或者location.reload()方法加…
暂无图片
编程学习 ·

python编程练习(小甲鱼)第6-10课

1.python中有两种除法运算,一种是真除,一种是floor除法,/ 是真除,保留浮点数,//是floor除法,去除浮点数保留整数 a = 30/4 #7.5 b = 30//4 #72.请写一个程序打印出 0~100 所有的奇数 for i in range(101):if i % 2==1:print(i)3.爱因斯坦曾出过这样一道有趣的数学题:有一…
暂无图片
编程学习 ·

应用10秒部署、成本降低50% 阿里云serverless容器改写云计算极限

在将应用部署时间从以天计缩短到以小时计后,云计算正进入秒计时代:阿里云推出的最新计算形态Serverless容器服务改写了云计算极限,单实例启动时间为创世界纪录的10秒,1分钟可弹出1000实例,这使按需按秒计费成为现实,在云计算大大降低计算成本的基础上,让总计算成本再次降…
暂无图片
编程学习 ·

js队列实现优先级插入的方法

队列是先进先出.在医院中排队的时候就是一个队列,最先排队的人,会先获得医生的治疗,这就是先进先出的队列但是也有例外,当医院来了一位急救病人的时候,这个队列就需要做一些改进,改为最小优先队列,这样可以让急救病人首先获得医生的救治,从而保住性命.现在用js来实现一个优先队…
暂无图片
编程学习 ·

Android 解析jwt遇到java.lang.IllegalArgumentException: bad base-64

解析jwt的时候遇到了java.lang.IllegalArgumentException: bad base-64 百思不得其解 按照网上说的:Android&ios java 这俩咋就不好使呢? 后来我看了篇帖子说 android开发中的bad base-64错误在涉及到服务器的软件中,由于使用android的Base64解码功能,而服务器端加密为…
暂无图片
编程学习 ·

Matlab class文件 简单上手使用

1.简单的书写规范 一般通过软件(拓展)新建功能,可以选择新建一个脚本、函数或者是类。当然文件中以类的形式书写代码,保存后matlab将自动识别该文件为类。 当使用软件新建类后,新建的文件中包含了类文件的基础格式(我使用的软件是MATLAB R2014b): classdef Untitled3%U…
暂无图片
编程学习 ·

[剑指offer]二叉搜索树的后序遍历数列

[剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:5/ \2 6/ \1 …
暂无图片
编程学习 ·

Java实现文件浏览器下载

前言:先说下需求,项目需求是用户一点击一个前端页面的链接就可以下载一个压缩包.因为就1个文件,使用文件管理系统像fastDSF,阿里云的OSS这种没必要,直接放在nginx服务器上的怕不好管理,于是给我限定了把文件打包到部署时候的jar包中并实现浏览器下载. 废话不多说,直接上代码! 1…
暂无图片
编程学习 ·

ZHS16GBK字符集插入中文时报错ORA-01756

插入数据时遇到一个奇怪的问题,插入中文报错ORA-01756: quoted string not properly terminated简单的复现测试如下:查看客户端及数据库字符集可以看到字符集是一样的,如果不同,设置客户端字符集与数据库端相同再测试export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK找了网上好多…
暂无图片
编程学习 ·

队列

队列(Queue):具有一定操作约束的线性表插入和删除操作:只能在一端插入,而在另一端删除队列的顺序存储实现 1. 定义 > 队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及一个记录队列尾元素位置的变量rear组成#define MaxSize <存储数据元…
暂无图片
编程学习 ·

Leetcode—437路径总和II

题目描述给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。…
暂无图片
编程学习 ·

项目实训——数据渲染数据引擎

项目实训——数据渲染数据引擎数据渲染layui卡片布局layui分页layui数据引擎遇到的问题 今天的任务就是要做出每个版块的页面。板块页面最重要就是数据的渲染。为了样式的统一,我继续使用layui,在这里用的是模板引擎laytpl。 数据渲染 layui卡片布局 为了美观,我使用了卡片式…
暂无图片
编程学习 ·

11.1 函数的默认参数

11.1 函数的默认参数 之前我们学过的,如果函数由形参,那么调用函数时要传递对性的实参。 事实上,函数可以有默认参数,这样如果不传递实参,则按照默认值给形参传值。函数声明和实现只能有一个默认参数,不能重复定义默认参数。 如果某个形参有了默认参数,则位于这个形参之…