Springboot聚合工程的几个坑(bean无法被扫描, plugins,dependency)

写在前边: 最近在写一个商城,使用Maven聚合工程来管理,但是其中搭建环境遇见了各种的坑。

一、关于的标签

这个标签在继承了Springboot的时候,就不要加这个标签,否则子工程无法找到spirngboot依赖。

    <parent>
        
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.1.RELEASEversion>
        <relativePath/> 
    parent>

此时不要加:

<dependencyManagement>
    
    <dependencies>
        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druid-spring-boot-starterartifactId>
            <version>${druid.version}version>
        dependency>
dependencyManagement>

二、关于maven的plugins

这个springboot的plugins加到启动类就好。

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <fork>truefork> 
                configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackagegoal>
                        goals>
                    execution>
                executions>
            plugin>

三、bean组件无法被扫描

java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'helloController': Unsatisfied dependency expressed through field 'userInfoService'

原因是:springboot从启动类所在包开始,扫描当前包及其子包下的所有文件。

但是我的包:启动类在com.huixian.admin下,所以无法扫描到其它的子项目的组建
Springboot聚合工程的几个坑(bean无法被扫描, plugins,dependency)_第1张图片
解决方法: 在启动类上加上扫描的包:@ComponentScan(basePackages = "com.huixian")

@SpringBootApplication
//配置Mapper扫描的地址
@MapperScan("com.huixian.system.mapper")
//配置扫描包的地址!重点!!!
@ComponentScan(basePackages = "com.huixian")
public class HuiXianAdminApplication {
     

    public static void main(String[] args) {
     
        SpringApplication.run(HuiXianAdminApplication.class, args);
    }

}

四、聚合工程

聚合工程中,每个依赖需要明确,如果A工程依赖B工程,B工程又依赖A工程,那么会冲突。
一般B工程导入了A工程依赖,B工程也会有A工程的所有依赖。

五、Druid连接池配置

# 配置数据源
  datasource:
    # druid数据库连接池
    type: com.alibaba.druid.pool.DruidDataSource
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/huixian?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    # druid设置
    # 初始连接数
    initialSize: 5
    # 最小连接池数量
    minIdle: 5
    # 最大连接池数量
    maxActive: 20
    # 配置获取连接等待超时的时间
    maxWait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    # 配置检测连接是否有效
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    #  filters: stat,wall,log4j 需要导入log4j
    filter: stat,wall
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

配置类:

/**
 * 德鲁伊配置
 * @author JUNSHI 
 * @create 2020-07-25 14:09
 */
@Configuration
public class DruidConfig {
     


    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
     
        return new DruidDataSource();
    }


    /**
     * 配置Druid后台的监控
     */
    @Bean
    public ServletRegistrationBean statViewServlet() {
     
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        Map<String,String> initParams = new HashMap<>();
        //后台用户名
        initParams.put("loginUsername","admin");
        //后台密码
        initParams.put("loginPassword","123456");
        // ""表示默认所有可以访问
        initParams.put("allow","");
        //禁止谁访问
        //initParams.put("loginUsername","admin");
        bean.setInitParameters(initParams);

        return bean;
    }

    @Bean
    public FilterRegistrationBean webStatFilter(){
     

        FilterRegistrationBean bean = new FilterRegistrationBean();

        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        //设定不收集的请求
        initParams.put("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters(initParams);

        bean.setUrlPatterns(Arrays.asList("/*"));

        return bean;
    }
}

访问druid后台:http://localhost:8080/druid/login.html
Springboot聚合工程的几个坑(bean无法被扫描, plugins,dependency)_第2张图片

你可能感兴趣的:(springboot系列,Java框架,mysql,spring,boot,java,spring,maven)