作者回复: 你仔细看看autoconfigure-demo那个项目的package,是geektime.spring.hello,包含了我们自动配置的类的geektime.spring.hello.greeting的,所以SpringBootApplication的扫描就能扫到我们的Configuration类,你换个包试试,没有包含关系,就不行了。
作者回复: 试想这样一个场景,自己公司里有一些特殊的组件,这些组件你希望简化别人的使用,像Spring Boot的其他组件一样,引入JAR就能直接用了。这时就要自己写自动配置相关的类了。
作者回复: 我的确没思考过这个问题,为此我自己DEBUG了一下,在spring.factories中EnableAutoConfiguration里加上这个类后,不管是否类上有@Configuration注解,这个类都会被作为配置类加载。@EnableAutoConfiguration的注释上也说了自动配置类就是普通的Configuration Bean,按照Spring的通常用法,还是考虑加上吧。
作者回复: 没太看明白你这里说的model和auto-config是指的什么。我大概猜测一下,你说是为什么我在geektime-spring-boot-autoconfigure里加了greeting这个artifact,为什么还要在autoconfigure-demo里再加greeting这个依赖吧。因为我用的scope是provided,并不会把它传递依赖进来。这个依赖应该由starter-dependency来引入,autoconfigure要做的就是Classpath里存在这个类时做配置,如果它自己就把这个依赖加进来了,我岂不是连判断都不用判了。
作者回复: 都会加载的
作者回复: 你在执行报错时给的一些提示信息就是由它们提供的,告诉你可能是什么问题,可以怎么怎么处理。
作者回复: 打开文档后,可以查看URL,里面是带了版本信息的,自己手改一下就好了
作者回复: 单单是Spring Boot的话,是不会实时读取配置文件的,启动时加载到什么就是什么了。Spring Cloud Config讲配置中心时我们会聊到能够动态生效的配置。
作者回复: 如果不加,这个类能被ComponentScan扫描到,那会生效。
作者回复: starter里面有依赖的管理,也有自动配置。