开发者社区> 问答> 正文

SpringBoot中,@Order不生效-java报错

"

springboot版本:1.3.5

示例代码如下:

@Configuration
@Order(3)
public class Conf1
{
	@Bean
	public Runnable createRunnable1()
	{
		System.out.println("111");
		return () -> {};
	}
}



@Configuration
@Order(2)
public class Conf2
{
	@Bean
	public Runnable createRunnable2()
	{
		System.out.println("222");
		return () -> {};
	}
}

运行方式:


import org.springframework.boot.SpringApplication;
@SpringBootApplication
public class App6
{
	public static void main(String[] args)
	{
		SpringApplication.run(App6.class, args);
	}
}
按照Order的效果,数字越小,越先初始化

但是,实际上先输出111,再输出了222

两个Order的数字怎么调整,都无效

请问,哪里有问题

"

展开
收起
montos 2020-05-31 16:35:49 1340 0
1 条回答
写回答
取消 提交回答
  • "clean下工程?######全新新建的项目。 不过我也试了一下,不行######试了一下,先打印222,后打印111######<div class=""ref""> <div class=""ref"">

    引用来自“开源中国首席门卫小哥”的评论

    试了一下,先打印222,后打印111

    引用来自“开源中国首席门卫小哥”的评论

    @Controller
    @EnableAutoConfiguration
    public class Test {
        public static void main(String[] args) throws Exception {
        	Object[] object = new Object;
        	object = Conf1.class;
        	object = Conf2.class;
        	object = Test.class;
            SpringApplication.run(object, args);
        }
    }



    @Controller
    @EnableAutoConfiguration
    public class Test {
        public static void main(String[] args) throws Exception {
        Object[] object = new Object ;
        object = Conf1.class;
        object = Conf2.class;
        object = Test.class;
            SpringApplication.run(object, args);
        }
    }

    ###### @卜祥龙 @卜祥龙 还是 1024 和谐######回复 @开源中国首席门卫小哥 : ……######回复 @卜祥龙 : 我跟你讲,那个自定义样式没了,我很生气。######回复 @开源中国首席门卫小哥 : 一言不合,就caocaocao,要文明!Bug,收到了~###### @卜祥龙 看BUG###### ######

    引用来自“开源中国首席门卫小哥”的评论

    你这种可以的。但是,

    SpringApplication.run(App6.class, args);

    这样为啥不行。

    比较我有N多个@Configuration的类,不可能都这样放到object[]里面去吧

    ######回复 @开源中国首席门卫小哥 : 我们生产机就是直接运行main方法的(写了一个start.sh运行)######那个你换tomcat启动试试呢######我也试过,不生效
    ######问题找到了吗?######

    我把代码分享给你哈

    不利用order,order好像存在问题,全是英文我看的有点累,不是没看得太明白,就不在这给你说是啥问题了


    public class Conf1
    {
        public Conf1() {
    		super();
    		 System.out.println("111");
    	}
    }



    public class Conf2
    {
        public Conf2() {
    		super();
    		 System.out.println("222");
    	}
    }



    @Configuration
    public class MyBatchConfiguration {
    
    	@Bean
    	public Conf2 Conf2() {
    		return new Conf2();
    	}
    
    	@Bean
    	public Conf1 conf1() {
    		return new Conf1();
    	}
    
    }



    启动的类,还是你的那个,如果想两个配置类那个先启动就放上面

    ######ApplicationRunner  或者CommandLineRunner 配合注解Order能完美解决你的问题"
    2020-05-31 16:36:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载