springbootrun方法啥时候扫描的配置类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springbootrun方法啥时候扫描的配置类相关的知识,希望对你有一定的参考价值。

SpringBootRun方法会在应用启动时扫描配置类。SpringBootRun方法是一个静态方法,它可以接受一个参数,该参数是一个字符串数组,其中包含要传递给应用程序的参数。SpringBootRun方法会调用SpringApplication类的run方法,该方法会接受一个参数,该参数是一个配置类,它包含了应用程序所需的所有配置信息。在调用run方法之后,SpringBootRun方法会扫描该配置类,以确定应用程序需要加载哪些组件。一旦所有组件都被加载,应用程序就可以正常运行了。 参考技术A 默认扫描
在启动类Application上的@SpringBootApplication注解,默认SpringBoot 扫描范围是启动类所在的包,即 guet
指定扫描
如果把启动类Application放到controller包下,扫描范围是controller以及子包,domain就扫描不到了,这时需要在启动类上添加@ComponentScan("guet.domain")
SpringBoot 扫描包
spring管理的包路径
组件扫描原理
在启动类的同级目录下,添加Component注解及其子注解的类会被加入到Spring容器中。
SpringBoot执行顺序
ApplicationRunner,Spring容器启动完成之后,就会紧接着执行这个接口实现类的run方法。
执行时机为容器启动完成的时候。
执行操作的时间是在容器启动末尾时间执行操作。
ApplicationRunner接口的实现方法比CommandLineRunner接口的实现方法前执行(当然也可以设置@Order的值来决定谁先执行)。

SpringBoot启动执行顺序
CommandLineRunner和ApplicationRunner作用及区别
ApplicationRunner接口
flex 布局列表自动换行
js给json对象添加、删除、修改属性
:nth-last-child(7) 表示倒数第 7 个元素。
参考技术B Spring Boot的@SpringBootApplication注解会告知Spring Boot在启动时要扫描任何带有@Configuration、@Component等注解的类。因此,Spring Boot启动时,会扫描该配置类中的所有注解,并且使用这些配置来对应用进行配置。Spring Boot的@SpringBootApplication注解会告知Spring Boot在启动时要扫描任何带有@Configuration、@Component等注解的类。因此,Spring Boot启动时,会扫描该配置类中的所有注解,并且使用这些配置来对应用进行配置。 参考技术C 默认扫描
在启动类Application上的@SpringBootApplication注解,默认SpringBoot 扫描范围是启动类所在的包,即 guet
指定扫描
如果把启动类Application放到controller包下,扫描范围是controller以及子包,domain就扫描不到了,这时需要在启动类上添加@ComponentScan("guet.domain")

SpringBoot 扫描包
spring管理的包路径
组件扫描原理
在启动类的同级目录下,添加Component注解及其子注解的类会被加入到Spring容器中。
参考技术D springboot所有自动配置都是在启动的时候扫描并加载:spring.factories所有的自动配置类都在这里。

Java中啥时候需要显示重载toString方法

为什么有的社会需要重载toString();有的时候不用啊。请解答一下

api中对于Object类,默认打印一个对象(如果这个对象的类在api上的方法中没有toString()方法)的时候,直接打印出getClass().getName() + '@' + Integer.toHexString(hashCode())这样的格式,如果这个对象类的方法中带有toString()方法,比如像String这个类中就有toString()这个方法,那么就不需要重载,一般而言,自己定义的类因为没有像String类一样本身带有toString()方法,已经自己重载了,那么一般而言我们需要重载toString()方法,还有一个很简单的方法就是,让系统帮你判断什么时候需要重载,就是编译后,发现打印出的结果类似于getClass().getName() + '@' + Integer.toHexString(hashCode())也就是比如像一个类Test中
public class Test
public static void main(String args[])
Test A=new Test();
System.out.println(A);


打印出
Test@35ce36
注意,Test是自己定义的一个类,没带有toString()方法,那么系统默认为object类来重载也就打印出上面的结果;
对于一个自己定义的类
public class Test
String name="小白";
String hobby="篮球";
public static void main(String args[])
Test A=new Test();
System.out.println(A);

public String toString()
return ("这个小孩字的名字是"+name+"\n"+"爱好是"+hobby);


打印出
这个小孩字的名字是小白
爱好是篮球
类Test中有name和hobby两个属性,我们想单单通过打印A对象就打印出自己想要的东西 比如说
("这个小孩字的名字是"+name+"\n"+"爱好是"+hobby);那么我们这个时候可以用重载toString()方法,这样可以令程序看起来更加的优雅?
当然这样也是可以的
public class Test
String name="小白";
String hobby="篮球";
public static void main(String args[])
Test A=new Test();
System.out.println("这个小孩字的名字是"+A.name+"\n"+"爱好是"+A.hobby);


这个时候不需要重载toString(),
重载的好处多多,需要慢慢去发现;
总之一个定义的类比如说Cat类,你在着这个类中定义了眼睛的颜色,皮毛的颜色,然后你就想了,我直接打印Cat的对象,可不可以将这个类的所有属性打印出来呢?这是不行的,只会打印出类名+@+hashCode,这个时候我们就需要通过重载toString来实现将类中的属性信息打印出来
3,有一个方法比较好用,就是当你运行的时候打印出类名+@+hashCode,这和你想得到的结果不一样,那么你这个时候就去重载好了,重载跟自己的需要有关,一切为了目的,这东西不用刻意去记,让系统去发现错误,让系统干多点活好了~
参考技术A 你对控制台的输出内容不满意的时候,就重写toString显示你想看到的内容和格式 参考技术B 从本质讲,只有一种情况需要重载toString:
“需要序列化(成字符串)的时候”
这一种情况表现出多种外在现象
比如
1、狭义方面,需要把对象打印显示字符串,打印过程就是对输出流的序列化。
2、需要传递给java库的各种字符接口的时候。
3、自定义的类,需要以显示成比较特殊形式的字符串。
4、等等等等
toString不是序列化的唯一方式,但用到toString就只是为了序列化成字符串
掌握序列化的技巧是关键。
=========
楼上有人说那么多,其实只是属于第1条一种表面情况。本回答被提问者采纳
参考技术C 看需要喽,好好看看定义,你就会明白喽

以上是关于springbootrun方法啥时候扫描的配置类的主要内容,如果未能解决你的问题,请参考以下文章

Java中的构造方法与普通方法的区别? 啥情况下用构造方法啥情况下用普通的方法

英文单词复数啥时候加s,啥时候加es

spring异步方法@Async

Spring Bootspring.factories

SpringBoot的默认包扫描路径

spring 组件和 bean 的作用域有啥区别? [复制]