说起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语句去了。