說起java,大學的時候自學了兩個月就放棄了,轉而學習C++,現在畢業才發現很多好的想法,從策划到具體實現,都要根據自身能力來挑選框架,進而學習語言,熟練使用C++后去學習其他的語言那才是輕車熟路,基本上兩個月就能掌握,畢竟事物是普遍存在聯系性的。
學習Spring Boot先要從Spring MVC說起,剛開始接觸spring mvc,個人趕緊它對XML的依賴太大,然而,配置XML是一件痛苦的事,對於我來說。boot是最佳選擇,干凈利落,讓人專注於業務的邏輯現實,而不用寫一堆配置。一堆XML配置帶來的問題就是后期難以維護,畢竟XML需要耐心去看,而且大部分時間里,你幾乎都是在寫XML,意義何在?
技術棧:spring boot + vue + Hibernate + maven + mysql
先從pom文件開始:
<?xml version="1.0" encoding="UTF-8"?> <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>org.leekin</groupId> <artifactId>sell</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>sell</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
其他的不做介紹,都是常用組件,這里用到了lombok,他的作用在於寫數據庫映射類的時候只要加入@Data注解,就可以不用寫getter和setter方法。
另外一個是log4j日志系統,logback日志系統能夠將日志寫入到文件,一下是我的配置,將警告和error分開寫入以及一些規則的配置(文件名很重要logback-spring.xml):
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <layout> <pattern> %d - %msg%n </pattern> </layout> </appender> <!--運行日志配置項--> <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>DENY</onMatch><!--命中則攔截--> <onMismatch>ACCEPT</onMismatch><!--沒有命中則使用該條規則--> </filter> <encoder> <pattern> %msg%n </pattern> </encoder> <!--滾動策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件路徑--> <fileNamePattern>D:/DevelopFiles/SpringMVC/sell/SellLog/sell-info-%d.log</fileNamePattern> </rollingPolicy> </appender> <!--程序錯誤日志配置項--> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern> %msg%n </pattern> </encoder> <!--滾動策略:每一天都創建一個文件--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件路徑--> <fileNamePattern>D:/DevelopFiles/SpringMVC/sell/SellLog/sell-error-%d.log</fileNamePattern> </rollingPolicy> </appender>
<!--攔截的級別是info,級別分為debug,info,error-->
<root level="info"> <appender-ref ref="consoleLog" /> <appender-ref ref="fileInfoLog"/> <appender-ref ref="fileErrorLog"/> </root> </configuration>
一切准備工作完成,開始設計數據庫,對於新手來說這是一個痛苦的過程,寫sql語句也要十分細心,沒耐心就用navicat來生成。
數據庫ER圖:
2 more column是create_time和update_time。
數據庫設計完畢后開始寫業務邏輯。
眾所周知,數據庫映射類是一個強大的功能,數據庫表名對應類名稱,屬性對應字段名稱,加入@Data注解省去幾十行代碼,對屬性的操作就是對字段內數據的增刪改,這種持久化操作很強大,Hibernate大法好,省去了寫sql語句。讓人更能專注於業務邏輯的開發,而不用維護sql語句去了。