spring整理

1.自定义Filters扫描注解
@ComponentScan( 
    includeFilters = { @ComponentScan.Filter( type = FilterType.REGEX,
        pattern = {"cn.ff.demo.*Dao", "cn.ff.demo.*Service"})
    },
    excludeFilters = { @ComponentScan.Filter( type = FilterType.ANNOTATION,
        classes = {org.springframework.stereotype.Controller.class}) 
    }
)
2.多模块引用其他模块时无法注入bean的问题

例如spring cloud项目中auth模块引用需要common模块。默认只扫描Application路径之下的包,所以需要设置。

  1. 使用@ComponentScan(value="com.xx")注解,指定扫描的包路径。
    但是每个模块都这样很low,所以可以如下:
  2. 在common模块的META-INF/spring.factories文件中配置接口的实现类名称,spring boot会读取这些配置文件并实例化。
    示例:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  cn.ff.common.config.RedisConfig,\
  cn.ff.common.utils.RedisUtil
3. pom中配置多环境及springboot 配置文件使用maven中的变量

在pom中配置多环境:


        
            dev
            
                true
            
            
                dev
                127.0.0.1:8848
                127.0.0.1:8848
                 
            
        
        
            test
            
                test
                192.168.48.200:8848
                192.168.48.200:8848
                
            
        

    

指定一个环境: mvn clean install package -P {dev|test|prod}

在springboot中使用pom文件中定义的变量就不能用默认的${}形式,而是用@@

spring:
    application:
        name: gateway
    profiles:
        active: '@profile.name@'    #对应pom中 

如果想用${}的形式 那么就需要在pom的 build 中添加如下


        
            
                
                    maven-resources-plugin
                    
                        utf-8
                        true 
                    
                
            
        
                
            
            
                src/main/resources
                
                    **/*
                
                true
            
        

你可能感兴趣的:(spring整理)