关于springBoot的tips

1. SpringBoot主启动位置

参考 SpringBoot指定额外需要扫描的包_shijiujiu33的博客-CSDN博客

我们都知道,SpringBoot主启动类标注了@SpringBootApplication注解,该注解引入了@ComponentScan注解
所以默认的包扫描规则是,程序会自动扫描主启动类所在包及其子包
这就有两个意思,第一,你不需要指定扫描包了。第二, 你必须注意扫描的位置

但是在多模块项目开发中,有时候会遇到这样的需求:
需要将公共模块的一个组件加入IOC容器,但是其所在包又不在默认扫描范围内

解决办法两个:
方法1:将公共模块中的该组件放在默认扫描的包下(包名一样)

方法2:使用@ComponentScan额外指定待扫描的包,但是不能用在主启动类上,因为这样会覆盖掉默认的包扫描规则,可以在其他标注了@Configuration的地方配置@ComponentScan(basePackages = { "xxx.yyy"})进行额外指定,这样就能达到效果也不会覆盖默认的包扫描规则,亲试有效。

SpringBoot版本:2.1.4.RELEASE

2.  在用一个@Autowired注解的bean时 为null

解决时候,所get到的,以下仅为本人主观感受,如有错误,见谅

2.1.
Spring里面,你要想用别的bean,你自己也的是个bean。
否则一个普通的类调用bean,会报空指针。
另外也不得不说一下,不要以为都成了bean,就可以没问题,
如果你要用他,结果他还没创建,也会报空指针,这就涉及到了bean的初始化顺序

2.2.

用@Configuration + @bean ①,
可以让某个类,比如Abc.java 变成容器bean,而且初始化会慢些,且定义的bean 的id名字是getAbc

用 @Component 直接加在A类上,也可让其加入容器,但是初始化时会快些,定义的bean 的id名字就是Abc
造成的后果可能是Abc需要用其他bean,结果其他bean还未制造出来,报空指针异常
解决办法就是用上面的@Configuration +@bean, 或者 你可以手动加载其他类②


tips:①(即在某个类上加上@Configuration注解,然后在其方法上加上@bean)
         ②
      3.1. 制造工具类,即手动获取容器中的bean,可参考文章spring

    也可参考 Shiro系列教材 (九)- 在 springboot 中整合 shiro

      @Component  
     public class SpringContextUtils implements ApplicationContextAware {  
    private static ApplicationContext context;  
  
    public void setApplicationContext(ApplicationContext context)  
            throws BeansException {  
        SpringContextUtils.context = context;  
    }  
  
    public static ApplicationContext getContext(){  
        return context;  
    }  
}  

   3.2. 在你需要用的地方
   if(null==permissionService){
     permissionService = SpringContextUtils.getContext().getBean(PermissionService.class);
     }
 

3. 关于yml属性值的获取

1. @Component + @Value 

@value实现了在某个字段上给定值

 2.  @Component + @ConfigurationProperties

@ConfigurationProperties 可以直接对整个类进行松散绑定,即按字段名字,自动匹配

4. 关于打成jar包、war包

4.1. 一般都是打成jar包,你也可以打war包,两者都可以用cmd的命令行java -jar 的方式启动

4.2  打成war包,可以选择排除掉tomcat服务器插件,不排除的时候,可以用自己独立的tomcat启动,也可以用命令行启动。

       排除后,用命令行不能启动,启动时报错:获得不了服务器工厂给的服务器。

5. 零散知识点

5.1 SpringBootApplication注解

 

Supongo que te gusta

Origin blog.csdn.net/qq_34085100/article/details/105701434
Recomendado
Clasificación