已經有好些日子沒有總結了,不是變懶了,而是我一直在奮力學習springboot的路上,現在也算是完成了第一階段的學習,今天給各位總結總結。
之前在網上找過不少關於springboot的教程,都是一些比較粗糙的文章,就連百度百科也是少的可憐,所以進度一直跟不上計划。下面根據我這幾天的學習和摸索,談談我對spring和springboot的區別,以及很多業界人士說它的快速開發,到底是快在哪兒,方便在哪兒?首先我認為在項目的架構搭建方面變得極其利索,不再需要像之前一樣整合ssh或ssm那樣進行一大堆的配置文件,他只是通過一個application入口類來配置所有的配置項,包括spring的一些默認配置項;其次springboot它沒有太多自己的特性,沒有完全顛覆之前的開發模式,反而提供了更加便捷的方式來集成了原來的開發模式,只能說換了一種快速的方式來提高開發速度。
廢話我也不多說了,也說不了,后面我會把我這幾天的整合過程詳細給大家總結下來,初次接觸如有地方有誤的,望及時指正。
項目結構詳解:
1、pom文件詳解
pom文件中各項依賴的作用見代碼注釋。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zxz.boot</groupId> <artifactId>springboot_mybatis</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.4.RELEASE</version> </parent> <dependencies> <!--Spring Boot--> <!--支持 Web 應用開發,包含 Tomcat 和 spring-mvc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--模板引擎--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!--支持使用 JDBC 訪問數據庫--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!--添加適用於生產環境的功能,如性能指標和監測等功能。 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- springboot的熱部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <!--Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <!--Mysql / DataSource--> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.26</version> </dependency> <!--Json Support--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.43</version> </dependency> <!--Swagger support--> <dependency> <groupId>com.mangofactory</groupId> <artifactId>swagger-springmvc</artifactId> <version>0.9.5</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> </dependencies> <!-- 使用插件來運行springboot(運行springboot的方式有2種:main方法運行或使用下面的插件運行) --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestone</id> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-milestone</id> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories> </project>
2、項目的入口類application.java詳解
先介紹一下在入口類中需要用到的常用注解:
@SpringBootApplication:這是一個組合注解,聚合了多個注解的功能,包含:排除自啟動項、排除自啟動項的beanname、掃描包和掃描類。【建議瞜一眼源碼更好】
@EnableAutoConfiguration:這個注解是用來啟動springboot中的自動配置項目,必須的加上,否則無法正常使用springboot默認配置的配置項目。
@ComponentScan :掃描controller層和service層中所有類上的注解(這個注解可以不加,因為組合注解@SpringBootApplication已經可以掃描)。
@MapperScan("com.zxz.mapper") :管理mybatis中所有mapper接口的代理對象。
@EnableTransactionManagement(proxyTargetClass = true):開啟事務管理的注解。
1 /** 2 * 整個項目的入口 3 */ 4 @SpringBootApplication 5 @EnableAutoConfiguration 6 @ComponentScan 7 @MapperScan("com.zxz.mapper") 8 @EnableTransactionManagement(proxyTargetClass = true) 9 public class Application { 10 11 private static Logger logger = Logger.getLogger(Application.class); 12 //啟動類 13 public static void main(String[] args) { 14 SpringApplication.run(Application.class, args); 15 logger.info("======spring boot start success ==========="); 16 } 17 }
因為我的項目最后是需要和mybatis整合的,所以在該入口類中必定有一些數據源、每層包掃描和注解掃描、管理mybatis中mapper接口的代理對象和事務管理器等一些必要的配置項。還有通過我上面的項目結構發現,mybatis的sql文件是放置在了resources文件下,所以還得通過配置映射到相應的xml文件中去等等,這些事情都需要借助該入口類來完成。
連接池配置:
首先得配置好連接數據庫的一些參數,之前我們是通常配置在某資源文件中,然后通過spring的配置文件進行加載到的,這里我們也需要將連接參數配置到SpringBoot規定的文件application.properties中,最后在入口類中通過注解加載即可。
application.properties配置內容:
1 server.port=8080 2 spring.datasource.url=jdbc:mysql://localhost:3306/zxz 3 spring.datasource.username=root 4 spring.datasource.password=123 5 spring.datasource.driver-class-name=com.mysql.jdbc.Driver 6 logging.level.com.zxz.mapper=debug
在入口類中通過注解加載:
1 @Bean 2 @ConfigurationProperties(prefix = "spring.datasource") //作用:加載application.properties文件中的數據庫連接參數 3 public DataSource dataSource(){ 4 return new DataSource(); 5 }
但是到這兒,可能很多哥們兒就有點說法了,現在大多數都是使用阿里的Druid數據源,因為性能好,但是在這里配置並沒有指定數據源的具體類型,難道默認使用的是Druid,不是的,springboot還不至於這么完美,目前它僅僅支持dbcp、dbcp2、hikari三種數據庫連接池。要是你就想要使用druid作為項目中的數據源,那么你就要費點兒力點開下面的代碼,只需將它們復制到你的入口類中即可:

1 /** 2 * 注冊DruidServlet 3 * @return 4 */ 5 @Bean 6 public ServletRegistrationBean druidServletRegistrationBean() { 7 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); 8 servletRegistrationBean.setServlet(new StatViewServlet()); 9 servletRegistrationBean.addUrlMappings("/druid/*"); 10 return servletRegistrationBean; 11 } 12 /** 13 * 注冊DruidFilter攔截 14 * @return 15 */ 16 @Bean 17 public FilterRegistrationBean duridFilterRegistrationBean() { 18 FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); 19 filterRegistrationBean.setFilter(new WebStatFilter()); 20 Map<String, String> initParams = new HashMap<String, String>(); 21 //設置忽略請求 22 initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"); 23 filterRegistrationBean.setInitParameters(initParams); 24 filterRegistrationBean.addUrlPatterns("/*"); 25 return filterRegistrationBean; 26 } 27 /** 28 * 配置DruidDataSource 29 * @return 30 * @throws SQLException 31 */ 32 @Bean 33 public DruidDataSource druidDataSource() throws SQLException { 34 DruidDataSource druidDataSource = new DruidDataSource(); 35 druidDataSource.setUsername("root"); 36 druidDataSource.setPassword("123"); 37 druidDataSource.setUrl("jdbc:mysql://localhost:3306/zxz"); 38 druidDataSource.setMaxActive(100); 39 druidDataSource.setFilters("stat,wall"); 40 druidDataSource.setInitialSize(10); 41 return druidDataSource; 42 }
事務管理器配置:
1 //配置transactionManager 2 @Bean 3 public PlatformTransactionManager transactionManager() throws SQLException{ 4 return new DataSourceTransactionManager(druidDataSource()); 5 }
mybatis中mapper.xml文件的映射配置:
因為是和mybatis的整合,免不了mapper.xml的加載和映射,springboot提供了專門的方式來加載它們。
1 //提供sqlSession 2 @Bean 3 public SqlSessionFactory sqlSessionFactory(PageHelper pageHelper)throws Exception{ 4 SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); 5 sqlSessionFactoryBean.setDataSource(druidDataSource()); 6 sqlSessionFactoryBean.setPlugins(new Interceptor[] {pageHelper}); 7 PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); 8 sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml")); 9 return sqlSessionFactoryBean.getObject(); 10 }
如果上面最基本的各項配置都差不多了,你就可以運行入口類中的偉大的main方法,看到如下界面沒有報錯信息則表示整合成功,各位盡量寫個能訪問數據庫的業務邏輯來驗證整合結果,這里因為時間問題我就不粘貼了:
好了,到這兒我也快收工了,今天就總結到這兒吧,下次繼續給各位總結springboot整合mybatis的分頁插件pageHelper、springboot的熱部署和springboot的日志加載等,與君共勉。