• 听幺零的声音
    2019-04-03
    您好,大佬:
           加不加那个spring.factories都一样啊,求解答。

    作者回复: 你仔细看看autoconfigure-demo那个项目的package,是geektime.spring.hello,包含了我们自动配置的类的geektime.spring.hello.greeting的,所以SpringBootApplication的扫描就能扫到我们的Configuration类,你换个包试试,没有包含关系,就不行了。

    
     4
  • 啊汀
    2019-04-14
    老师,为什么自动配置model 里面已经加入了 auto-config 依赖,在主程序里面引用的话还要额外加入 auto-config 依赖呢,不会继承吗?

    作者回复: 没太看明白你这里说的model和auto-config是指的什么。我大概猜测一下,你说是为什么我在geektime-spring-boot-autoconfigure里加了greeting这个artifact,为什么还要在autoconfigure-demo里再加greeting这个依赖吧。因为我用的scope是provided,并不会把它传递依赖进来。这个依赖应该由starter-dependency来引入,autoconfigure要做的就是Classpath里存在这个类时做配置,如果它自己就把这个依赖加进来了,我岂不是连判断都不用判了。

     2
     3
  • 星期八
    2019-10-25
    老师:
         我在设置自动配置的时候,没有在配置类上增加Configuration,只是增加了spring.factories,发现也能加载和自动注入,那加不加Configuration注解,有什么区别呢?

    作者回复: 我的确没思考过这个问题,为此我自己DEBUG了一下,在spring.factories中EnableAutoConfiguration里加上这个类后,不管是否类上有@Configuration注解,这个类都会被作为配置类加载。@EnableAutoConfiguration的注释上也说了自动配置类就是普通的Configuration Bean,按照Spring的通常用法,还是考虑加上吧。

    
     1
  • 那一夜
    2019-07-07
    老师你好,我看到你在geektime-spring-boot-autoconfigure这个module里面自己新建了个spring.factory然后添加了EnableAutoConfiguration扫描GreetingAutoConfiguration,这样配置不会把spring-boot-autoconfigure的那个spring.factory覆盖掉吗,这种情况下,spring boot application加载的是哪个spring.factory,还是两个都加载了?

    作者回复: 都会加载的

    
     1
  • 嫩芽芽
    2019-04-11
    请问老师最后讲的那个分析器具体怎么应用呢?

    作者回复: 你在执行报错时给的一些提示信息就是由它们提供的,告诉你可能是什么问题,可以怎么怎么处理。

    
     1
  • 杨杰
    2020-01-28
    你好,可以介绍一下在自动配置的实际应用场景么?我指的是在企业级应用里面,一般什么情况下需要自己定义自动配置?

    作者回复: 试想这样一个场景,自己公司里有一些特殊的组件,这些组件你希望简化别人的使用,像Spring Boot的其他组件一样,引入JAR就能直接用了。这时就要自己写自动配置相关的类了。

    
    
  • 杨杰
    2020-01-25
    我调试这部分源代码的时候发现了一个奇怪的问题,如果是读取jar包里面的东西和直接读取文件的不太一样:
     从jar包里面读取spring.facories配置的代码:
           url = "jar:file:/D:/spring-boot-2.1.3.RELEASE.jar!/META-INF/spring.factories";
            resource = new UrlResource(url);
            properties = PropertiesLoaderUtils.loadProperties(resource);

            for (Map.Entry<?, ?> entry : properties.entrySet()) {
                log.info("key {}",((String) entry.getKey()).trim());
    // log.info("name {}",entry.getValue());
            }
    把jar包解压出来读取的代码:
    String url = "file:d:/spring.factories";
            UrlResource resource = new UrlResource(url);
            Properties properties = PropertiesLoaderUtils.loadProperties(resource);

            for (Map.Entry<?, ?> entry : properties.entrySet()) {
                log.info("key {}",((String) entry.getKey()).trim());
            }
    请问这个是什么情况?
    展开

    作者回复: 你确定内容不一样么?我自己也写了个程序试了下,是一样的呀。可以看看这里: https://gitee.com/digitalsonic/codes/dae7lsv21j6hf9oiw3grt41

     1
    
  • InfoQ_d8fa292cecae
    2019-12-17
    老师 请问@Configuration配置类中的@Bean is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 改怎么解决
    
    
  • 叶鹏
    2019-09-07
    老师,你好,有一个问题,在看源码的过程中,有看到具体的方法,但是有很多实现,怎么判断是哪个实现类的实现了他的方法?

    作者回复: 如果是接口的实现,那这些都是它的实现,你的问题应该是想问怎么知道具体运行过程中走了哪个实现吧。可以试着找配置文件,或者DEBUG,或者有时进行一些推断。通常如果不是多种不同实现,而是同一个类出现在不同jar里,那你就要小心是不是会存在运行过程中有不同的版本的类,可能会给你带来些小麻烦。

    
    
  • 亚林
    2019-06-14
    老师的mac上面安装的小红伞,是公司要求必须安装的么?

    作者回复: 这是自己的电脑,虽说针对Mac的病毒不像Windows这么多,不够出于以防万一的角度,还是装了一个。不过大部分公司的确是有安装杀毒软件的要求。

    
    
  • Tunayoyo
    2019-06-02
    就是静态引入Login,为什么main()打印为null?非静态引入时,run方法打印表明已经注入的问题。

    作者回复: login是Spring容器注入到Bean的成员变量里的,你为了让main静态方法能访问到它将它设为了static的,main运行时login都还没被注入呢。运行run时容器已经都把Bean构造完了,依赖也都处理好了,自然就能找到了。

    
    
  • Tunayoyo
    2019-06-02
    @SpringBootApplication
    public class AutoconfigureDemoApplication implements ApplicationRunner {
        @Value("${user.username}")
        public String username;

        @Autowired
        private static Login login;

        public static void main(String[] args) {
            SpringApplication.run(AutoconfigureDemoApplication.class, args);
            System.out.println(login);
        }

        @Override
        public void run(ApplicationArguments args) throws Exception {
            System.out.println(username);
    //        System.out.println(login);
        }
    展开
    
    
  • WL
    2019-05-23
    请问一下老师@ConditionalProperties注解会实时读取配置信息还是在启动的时候读取一次?

    作者回复: 单单是Spring Boot的话,是不会实时读取配置文件的,启动时加载到什么就是什么了。Spring Cloud Config讲配置中心时我们会聊到能够动态生效的配置。

    
    
我们在线,来聊聊吧