1、参考 搭建好父子模块。

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 依赖并添加相关的一些配置即可。
详情可参考:

然后在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函数里的执行代码不一样。

 

9、maven项目改名字

去项目所在目录修改名字,然后改pom文件中的 <artifactId>名字</artifactId> ,重新将项目导入eclipse即可。