• maven父子项目工程搭建及添加springboot、mybaties等依赖详解


    1、参考https://www.cnblogs.com/yrjns/p/11254870.html 搭建好父子模块。

    2、在父pom中添加对springboot的依赖,

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
    </parent>

    这时并不能把springboot的依赖包添加进来,必须在<dependencies> 添加需要依赖的springboot依赖包才能在Maven Dependencies 看到依赖的jar。

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <exclusions>
    <exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
    </exclusions>
    <scope>test</scope>
    </dependency>

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <exclusions>
    <exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
    </exclusions>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
    </dependency>
    </dependencies>

    可以根据需要添加spring-boot-starter-parent依赖的其他jar包。

    通过继承spring-boot-starter-parent,默认具备了如下功能:
    .Java版本(Java8)
    .源码的文件编码方式(UTF-8)
    .依赖管理
    .打包支持
    .动态识别资源
    .识别插件配置
    .识别不同的配置,如:application-dev.properties 和 application-dev.yml

    3、完成上面这些就可以建立启动类,启动了。

    @SpringBootApplication
    public class App
    {
    public static void main( String[] args )
    {
    System.out.println( "Hello World!" );
    }
    }

    这时父子工程的pom文件 可以执行 maven clean 和maven install maven update等。

    4、添加对mybaties 的支持,

    在<dependencies> 添加

    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>

    <exclusions>
    <exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
    </exclusions>
    <version>1.3.1</version>

    </dependency>

    MyBatis-Spring-Boot-Starter依赖将会提供如下功能:

    自动检测现有的DataSource
    将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递
    将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
    自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。

    使用了该Starter之后,只需要定义一个DataSource即可(application.properties或application.yml中可配置),它会自动创建使用该DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。会自动扫描你的Mappers,连接到SqlSessionTemplate,并注册到Spring上下文中。


    mybatis的配置项:mybatis.mapperLocations=


    结论是:如果Mapper.xml与Mapper.class在同一个包下且同名,spring扫描Mapper.class的同时会自动扫描同名的Mapper.xml并装配到Mapper.class。

    如果Mapper.xml与Mapper.class不在同一个包下或者不同名,就必须使用配置mapperLocations指定mapper.xml的位置。

    此时spring是通过识别mapper.xml中的 <mapper namespace="com.fan.mapper.UserDao"> namespace的值来确定对应的Mapper.class的。


    5、添加数据库连接池和数据库驱动


    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <exclusions>
    <exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
    </exclusions>
    </dependency>


    <!-- jdbc6 驱动的依赖(需指定版本) -->
        <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
       <version>6.0.6</version>
        </dependency> 


    Druid是什么?
    Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

    Druid 具体配置操作
    阿里 Druid为SpringBoot 提供专门的start依赖,Mybatis 使用 Druid 相对比较简单,我们只需要引入 Druid 的starter 依赖并添加相关的一些配置即可。
    详情可参考:
    https://blog.csdn.net/ljk126wy/article/details/87895658

    然后在application.properties中进行JDBA配置:

    spring.datasource.type: com.alibaba.druid.pool.DruidDataSource
    spring.datasource.url=jdbc:mysql://localhost:3306/learn?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    #初始化时建立物理连接的个数
    spring.datasource.druid.initial-size=3
    #最小连接池数量
    spring.datasource.druid.min-idle=3
    #最大连接池数量
    spring.datasource.druid.max-active=10
    #获取连接时最大等待时间
    spring.datasource.druid.max-wait=60000
    #配置监控页面访问登录名称
    spring.datasource.druid.stat-view-servlet.login-username=admin
    #配置监控页面访问密码
    spring.datasource.druid.stat-view-servlet.login-password=admin
    #是否开启慢sql查询监控
    spring.datasource.druid.filter.stat.log-slow-sql=true
    #慢SQL执行时间
    spring.datasource.druid.filter.stat.slow-sql-millis=1s


    6、添加打包依赖的插件和插件配置

    在父pom中添加插件声明<pluginManagement>,它和<dependencyManagement>的作用一样,只是对插件或依赖包做声明和指定版本号,并不真正的引入,真正的引入需要在子pom中配置<plugins> 和</dependencies>,只是省去了版本号的指定。这是为了防止版本一致和防止不同子工程引入版本不一致导致冲突。
    <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven
    defaults (may be moved to parent pom) -->
    <plugins>
    <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.0.0</version>
    </plugin>
    <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2</version>
    </plugin>
    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    </plugin>
    <!-- <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20.1</version>
    </plugin> -->
    <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    </plugin>
    <plugin>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    </plugin>
    <plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    </plugin>
    <!-- 编译打包 -->
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <!--这部分可有可无,加上的话则直接生成可运行jar包 -->
    <archive>
    <manifest>
    <mainClass>${exec.mainClass}</mainClass>
    </manifest>
    </archive>
    <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    </configuration>
    </plugin>

    </plugins>
    </pluginManagement>
    </build>

    在子pom中添加插件依赖和打包配置

    <build>

    <plugins>

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <archive>
    <manifest>
    <addClasspath>true</addClasspath>
    <classpathPrefix>lib/</classpathPrefix>
    <mainClass>com.nana.SpringbootApplication</mainClass>
    </manifest>

    <manifestEntries>
    <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
    <Class-Path>./config/</Class-Path>
    </manifestEntries>

    </archive>

    <excludes>
    <exclude>config/**</exclude>
    </excludes>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
    <execution>
    <id>copy-dependencies</id>
    <phase>package</phase>
    <goals>
    <goal>copy-dependencies</goal>
    </goals>
    <configuration>
    <outputDirectory>${project.build.directory}/lib</outputDirectory>
    </configuration>
    </execution>
    </executions>
    </plugin>

    <!-- 该插件的作用是用于复制指定的文件 -->
    <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
    <execution> <!-- 复制配置文件 -->
    <id>copy-resources</id>
    <phase>package</phase>
    <goals>
    <goal>copy-resources</goal>
    </goals>
    <configuration>
    <resources>
    <resource>
    <directory>src/main/resources/config</directory>
    <includes>
    <!-- <include>*.properties</include> -->
    </includes>
    </resource>
    </resources>
    <outputDirectory>${project.build.directory}/config</outputDirectory>
    </configuration>
    </execution>
    </executions>
    </plugin>


    </plugins>

    </build>


    7、配置子工程A对B的依赖

    只需要在A工程的pom文件里把对B的 依赖加上,就已工程依赖的方式依赖了B工程,可以在A的Maven Dependencies 看到B工程,注意不要以静态jar包的方式引人,maven默认是工程方式引入,这样修改了B工程不用打包,A工程立即即可感知到。
    <dependency>
    <groupId>com.wangna.mvntest</groupId>
    <artifactId>my-jdbc</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </dependency>


    8、启动类配置

    @SpringBootApplication
    //@MapperScan(basePackages = {" com.my.main.project.jdbc"," com.my.main.project.entity"})//将项目中对应的mapper类的路径加进来就可以了
    @ComponentScan(basePackages = {"com.my.main.project"})
    @MapperScan("com.my.main.project.jdbc.mapper")
    public class App
    {
    public static void main( String[] args )
    {
    ConfigurableApplicationContext context = SpringApplication.run(App.class, args);

    System.out.println( "Hello World!" );
    }
    }

    执行 SpringApplication.run(App.class,args);的时候其实执行的是App类上的三个注解,和main函数里的其代码没有任何关系,是扫描主类目录和配置的目录下的含有spring注解 @Compent等的类。并注册到spring上下文环境中,并扫描starter 自动配置类,拉起spring上下文环境。

    所以如果在同一目录下写了两个启动类,只要上面的注解一样,启动那一个都是一样的,唯一不同的是main函数里的执行代码不一样。


  • 相关阅读:
    OC 消息机制本质
    Lua中的闭包
    Lua中的函数
    Lua中的语句
    Lua中的表达式
    Lua中的类型与值
    Unity3D之通过C#使用Advanced CSharp Messenger
    C#中sealed关键字
    C#委托delegate、Action、Func、predicate 对比用法
    Unity3D之IOS&Android收集Log文件
  • 原文地址:https://www.cnblogs.com/luckyna/p/14210827.html
Copyright © 2020-2023  润新知