SpringBoot與Mybatis整合的多模塊項目

springBoot項目構建

Spring多模塊項目的構建

1.使用Idea構建一個Springboot項目

File-->new-->project-->springInitializr-->(NEXT)java

2.主項目pom中添加依賴

<!-- Spring Boot Web 依賴 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<!-- Spring Boot Test 依賴 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>

3.建立各個功能模塊

主項目右鍵-->new Module-->Mavenmysql

4.web模塊

主項目右鍵-->new Module-->springInitializr-->SpringBoot Web項目git

修改parent爲主項目parent,能夠去掉重複的依賴github

刪除主項目的src等文件夾,能夠將主項目中的build模塊移到web項目中web

5.運行

設置好各模塊中的依賴關係,能夠將不一樣業務的代碼放在不一樣的模塊中,Springboot的默認加載類會掃描其目錄下全部Spring相關注解,因此本身寫的各種須要在主Application所在的包下。spring

web模塊在打包時,默認爲jar打包。若是想使用自帶的Tomcat做爲運行服務器,那麼能夠打包成war包,使用Tomcat訪問。sql

2、SpringBoot與Mybatis的整合

  1. 在pom文件中添加對mybatis、mysql鏈接池等jar包的依賴
<!-- Spring Boot Mybatis 依賴 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>${mybatis-spring-boot}</version>
		</dependency>

		<!-- Druid 數據鏈接池依賴 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${druid}</version>
		</dependency>

		<!-- MySQL 鏈接驅動依賴 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql-connector}</version>
		</dependency>
  1. 對web模塊下的Springboot配置文件進行配置,主要是數據庫的信息數據庫

  2. 配置DruidDataSource的配置文件,採用@Configuration類的形式api

  3. 寫各個層的方法spring-mvc

    大坑

    mysql數據庫對應的版本問題,使用8.x版本數據庫根本不能完成Druid的數據源鏈接

    注意pom文件中導入的依賴包,其實並很少,不要搞昏了頭

    Dao層代碼註解@Mapper

    項目Github地址

3、SpringBoot的配置文件

Spring Boot 提供了對應用進行自動化配置。相比之前 XML 配置方式,不少顯式方式申明是不須要的。兩者,大多數默認的配置足夠實現開發功能,從而更快速開發。

Spring Boot 不僅僅從 application.properties 獲取配置,因此咱們能夠在程序中多種設置配置屬性。按照如下列表的優先級排列:

1.命令行參數

2.java:comp/env 裏的 JNDI 屬性

3.JVM 系統屬性

4.操做系統環境變量

5.RandomValuePropertySource 屬性類生成的 random.* 屬性

6.應用之外的 application.properties(或 yml)文件

根據這個在多 moudle 的項目中,好比常見的項目分 api 、service、dao 等 moudles,每每會加一個 deploy moudle 去打包該業務各個子 moudle,應用之外的配置優先。

7.打包在應用內的 application.properties(或 yml)文件

8.在應用 @Configuration 配置類中,用 @PropertySource 註解聲明的屬性文件

9.SpringApplication.setDefaultProperties 聲明的默認屬性


springboot能夠在不一樣的環境,設置有多個環境的配置:

application-dev.properties:開發環境
application-prod.properties:生產環境

Spring Boot 是經過 application.properties 文件中,設置 spring.profiles.active 屬性,好比 ,配置了 dev ,則加載的是 application-dev.properties :

# Spring Profiles Active
spring.profiles.active=dev

@Configuration

springboot推薦使用用java代碼的形式申明註冊bean。 @Configuration註解能夠用java代碼的形式實現spring中xml配置文件配置的效果。

@Configuration
public class TestMybaitsConf {
    @Bean
    public DataSource dataSource() {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        try {
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql://192.168.100.25:6660/TXSMS?useUnicode=true&amp;characterEncoding=utf-8");
            dataSource.setUser("root");
            dataSource.setPassword("123456");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return dataSource;
    }
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) {
        SqlSessionFactory factory = null;
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        bean.setConfigLocation(resolver.getResource("classpath:mybatis.xml"));
        try {
            factory = bean.getObject();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return factory;
    }
    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

使用xml註冊bean

@Configuration
@ImportResource("classpath:spring-mybatis.xml")
public class TestMybaitsConf {

}

使用的xml

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/jee  http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
        http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://192.168.100.25:6660/TXSMS?useUnicode=true&amp;characterEncoding=utf-8"></property>
        <property name="user" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:mybatis.xml"></property>
    </bean>

    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
    </bean>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
相關文章
相關標籤/搜索