Spring开发技巧

课程中使用的Spring开发技巧

  • SessionStrategy

       包路径:org.springframework.social.connect.web.SessionStrategy

  功能:涵盖了session大部分操作都包括

  • AntPathMatcher

     包路径:org.springframework.util.AntPathMatcher

  功能:给定2个url,判定是否匹配,支持srping中带通配符的url

  • InitializingBean

  包路径:org.springframework.beans.factory.InitializingBean

  功能:在所有属性设置完成后,被调用一次该方法设置

  • Bean条件注解

  参考SpringBoot详解:https://www.cnblogs.com/ytxmx/articles/11075451.html

  • BeanPostProcessor 初始化钩子方法

  参考Spring详解:https://www.cnblogs.com/ytxmx/articles/11075475.html

  • 依赖查找

  依赖查找: 当有多个子类实现的时候,根据beanNam进行查找需要的子类; 如下图的autowired,声明是一个Map,那么key = beanName、value = 不同的子类实现

  使用场景::编写基础架子,提供了多种相同功能的不同实现策略的时候

  
  @Autowired
  private Map<String, ValidateCodeGenerate> validateCodeGenerates;
  • SpringBoot各种默认路径技巧

  有时候你引入一些包,就会发现会增加多个restfull服务,这些服务注意查看控制台日志,就能找到对应的处理器

  对于springboot默认提供处理错误的restfull服务如下

  

// org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController
                      // BasicErrorController 类提供的默认错误信息处理服务
  • Configuration条件注解

  ConditionalOnProperty

  在imooc.security.social.qq前缀下,当appId属性存在的时候才让该配置生效

@Configuration
// 当配置了app-id的时候才启用
@ConditionalOnProperty(prefix = "imooc.security.social.qq", name = "app-id")
public class QQAutoConfig extends SocialConfigurerAdapter {
  • @FrameworkEndpoint

  该注解只用于框架提供端点,语义和 Controller 注解一致, 如果使用Controller提供了和FrameworkEndpoint标识的相同路径,则框架提供的端点不会被路由到;

  一般的场景用于:覆盖框架默认提供的端点;

  • @Order 注解

  可以为依赖查找集合按顺序注入

  比如以下场景,对于bean的注入顺序,可以按照order指定的来放入

  

@Component
public class DefaultAuthorizeConfigManager implements AuthorizeConfigManager {
    // 由于需要有序的,所以不能再使用set了
    // 依赖查找技巧
    @Autowired
    private List<AuthorizeConfigProvider> providers;

@Component
@Order(Integer.MIN_VALUE)
public class CommonAuthorizeConfigProvider implements AuthorizeConfigProvider {

@Component
@Order(Integer.MAX_VALUE)
public class DemoAuthorizeConfigProvider implements AuthorizeConfigProvider {

 

posted on 2019-06-21 15:48  小毛线  阅读(65)  评论(0)    收藏  举报

导航