准备工作
JDK >= 1.8 IntelliJ IDEA > 2016
IntelliJ IDEA必装插件
- .ignore 编辑.gitignore文件
- Free MyBatis plugin MyBatis导航定位
- Lombok Plugin 自动生成GetSet方法
- Maven Helper Maven快捷操作
- Translation 翻译插件
- restfultoolkit 根据 URL 直接跳转到对应的方法定义,一个简单的 http 请求工具
配置Maven私服
如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件,这样就加大了中央仓库的负载和浪费了外网的带宽,如果网速慢的话还会影响项目的进程。为团队创建私服,可以让公司的团队共享一套构件,加快了项目搭建的进程。所以我们选择用Nexus创建私服。
私服的搭建由公司统一完成,我们只需要添加一个配置文件就可以从私服下载类库了,要设置私服只需要在mirrors节点内添加子节点mirror即可。
标准maven配置文件:
<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><!-- 本地仓库的位置 用户目录下的.m2为maven用户主目录--><localRepository>${user.home}/.m2/repository</localRepository><pluginGroups></pluginGroups><proxies></proxies><servers></servers><mirrors></mirrors><profiles></profiles></settings>
- 公司内网私服
<mirror><id>nexus-releases</id><url>http://192.168.1.239:8081/repository/maven-public/</url><mirrorOf>*</mirrorOf></mirror>
- 阿里私服
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
- Maven中央仓库
<mirror><id>Central</id><mirrorOf>central</mirrorOf><name>Central Repository</name><url>http://central.maven.org/maven2/</url></mirror>
相关配置文件在共享文件夹 \\192.168.1.199\lyy\西安交通信息业务软件开发框架\maven 中,可以直接复制。
IDEA在默认情况下,读取maven配置文件的位置在用户目录下的.m2目录只需要把配置文件复制到.m2目录即可。如果需要手动设置IDEA中maven的配置文件,设置路径:Preferences →Build,Executeion,Deployment→Build Tools→Maven。
红色标注的地方,选择新的路径。
新建项目
1. 新建Spring Boot项目

在新建之前需要设置Jdk,依次输入Group:com.xci,Artifact:bus-schedule-server,Name:bus-schedule-server,Package:com.xci.bus.schedule,在下一页的依赖中选择 Web → Spring Web Starter,完成项目创建。
2. 设置pom.xml文件
用下面节点的内容替换原配置文件
<parent><artifactId>xci-framework</artifactId><groupId>com.xci</groupId><version>1.2.18</version></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>com.xci</groupId><artifactId>xci-core</artifactId><version>1.2.2</version></dependency><dependency><groupId>com.xci</groupId><artifactId>xci-sys</artifactId><version>1.2.9</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>jdbc.driver.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.1.0.7.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
3. 修改.gitignore文件
4. 新建ehcache.xml文件
在resources目录下新建缓存配置文件ehcache.xml
5. 新建logback-spring.xml文件
在resources目录下新建日志配置文件logback-spring.xml。
6. 修改application.properties文件
在resources目录下修改项目主配置文件application.properties
#服务器端口server.port=8321#Json序列化时区spring.jackson.time-zone=GMT+8#Json序列化默认日期格式spring.jackson.date-format=yyyy-MM-dd HH:mm:ss#是否启用文件上传spring.servlet.multipart.enabled=true#文件上传单个文件大小spring.servlet.multipart.max-file-size=50MB#文件上传单次请求大小spring.servlet.multipart.max-request-size=100MB#缓存类型spring.cache.type=ehcache#缓存配置文件spring.cache.ehcache.config=classpath:/ehcache.xml#===========================数据源公共属性===========================##是否启用动态数据源xci.dynamic-datasource.enabled=false#数据连接池类型spring.datasource.type=com.zaxxer.hikari.HikariDataSource#连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)spring.datasource.hikari.maximum-pool-size=20#连接只读数据库时配置为true, 保证安全spring.datasource.hikari.read-only=false#等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒spring.datasource.hikari.connection-timeout=5000#一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟spring.datasource.hikari.idle-timeout=600000#一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';)spring.datasource.hikari.max-lifetime=1800000#分页合理化参数,防止出现无效的分页参数pagehelper.reasonable=true#允许在运行时根据多数据源自动识别对应方言的分页pagehelper.auto-runtime-dialect=true#mybatis文件地址mybatis.mapper-locations=classpath*:mapper/**/*.xml#使用驼峰和中划线字段进行转换mybatis.configuration.map-underscore-to-camel-case=true#为制定Jdbc类型的字段使用nullmybatis.configuration.jdbc-type-for-null=null#===========================数据源公共属性===========================##===========================单数据源配置===========================##数据库驱动spring.datasource.driver-class-name=oracle.jdbc.OracleDriver#数据库IPspring.datasource.url=jdbc:oracle:thin:@192.168.1.226/testorcl#数据库账号spring.datasource.hikari.username=gjzn#数据库密码spring.datasource.hikari.password=gjzn#分页插件类型,可以使用下面的缩写值:oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derbypagehelper.helperDialect=oracle#===========================单数据源配置===========================##是否启用文档xci.swagger.enabled=true#是否开启文档认证swagger.basic.enable=true#认证用户名swagger.basic.username=xci#认证密码swagger.basic.password=xci#日志配置文件路径#logging.config=logback-spring.xml#上传根目录xci.upload.root=/uploads#上传单个文件允许的大小,单位KBxci.upload.allow-max-size=10240#允许文件上传的扩展名xci.upload.allow-extension=gif, jpg, jpeg, png, bmp, flv, mp3, mp4, wav, wma, avi, mpg, rmvb,zip, rar, doc, docx, xls, xlsx, ppt, pptx, txt, pdf,xml,repx#服务器名称xci.api.name=本地服务器#接口验证应用系统xci.api.valid-app=true#接口验证时间戳xci.api.valid-timestamp=false#接口验证时间戳偏差单位秒xci.api.timestamp-expire-offset=120
6.1 Oracle数据库
执行Oracle建库脚本,之后执行数据初始化脚本,执行完成后修改配置文件中的数据源。
#===========================单数据源===========================##数据库驱动spring.datasource.driver-class-name=oracle.jdbc.OracleDriver#数据库IPspring.datasource.url=jdbc:oracle:thin:@192.168.1.226/testorcl#数据库账号spring.datasource.hikari.username=gjzn#数据库密码spring.datasource.hikari.password=gjzn#分页插件数据库类型pagehelper.helperDialect=oracle#===========================单数据源===========================#
6.2 SQLServer数据库
执行SQLServer建库脚本,之后执行数据初始化脚本,执行完成后修改配置文件中的数据源。
#===========================单数据源===========================##数据库驱动spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver#数据库IPspring.datasource.url=jdbc:sqlserver://192.168.1.226:1433;DatabaseName=xci_parent#数据库账号spring.datasource.hikari.username=sa#数据库密码spring.datasource.hikari.password=server2008.newcom#分页插件数据库类型pagehelper.helperDialect=sqlserver#===========================单数据源===========================#
6.3 MySQL数据库
执行MySQL建库脚本,之后执行数据初始化脚本,执行完成后修改配置文件中的数据源。
#===========================单数据源===========================##数据库驱动spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#数据库IPspring.datasource.url=jdbc:mysql://localhost:3306/xci_parent?useUnicode=true&characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull#数据库账号spring.datasource.hikari.username=root#数据库密码spring.datasource.hikari.password=root#分页插件数据库类型pagehelper.helperDialect=mysql#===========================单数据源===========================#
7. 新建项目包
在项目中新建以下包,用来将不同的代码放到不同的位置,具体含义如下:
- api 存放系统Api接口相关的Controller
- config 存放系统相关的配置和组件注入类
- dao 存放系统数据访问层代码
- entity 存放系统数据库实体层代码
- runner 存放需要系统启动时自动初始化的代码
- service 存放系统业务服务层代码
8. 新建SysRunner文件
在包runner下面新建类SysRunner,用来初始化系统用户权限等模块的缓存。
/*** 应用程序启动后系统缓存初始化* @author 吕艳阳*/@Order(value = 0)@Componentpublic class SysRunner implements ApplicationRunner {@Resourceprivate AppService appService;@Resourceprivate UserService userService;@Resourceprivate DeptService deptService;@Resourceprivate ParamService paramService;@Resourceprivate DicService dicService;@Resourceprivate ReportService reportService;@Overridepublic void run(ApplicationArguments args) {appService.refreshCache();userService.refreshCache();deptService.refreshCache();paramService.refreshCache();dicService.refreshCache();reportService.refreshCache();}}
9. 新建WebMvcConfig文件
在包config下新建WebMvcConfig.java,表示Spring MVC配置类。
10. 新建SwaggerConfig文件
在包config下新建SwaggerConfig, Api接口文档配置类。
/*** Api接口文档配置* @author 吕艳阳*/@Configuration@EnableSwagger2@EnableSwaggerBootstrapUI@ConditionalOnProperty(name = "xci.swagger.enabled", havingValue = "true")public class SwaggerConfig {@Resourceprivate SwaggerProperties swaggerProperties;/*** 设置系统分组接口相关信息*/@Bean@Order(value = 1) //显示为第一项public Docket sysRestApi() {List<Parameter> ps = Lists.newArrayList();return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) //此接口对应的文档信息.groupName("系统权限接口") //分组接口名称.select().apis(RequestHandlerSelectors.basePackage("com.xci.sys")) //分组接口扫描的包路径.paths(PathSelectors.any()).build().globalOperationParameters(ps);}/*** 设置业务分组接口相关信息*/@Bean@Order(value = 2) //显示为第二项public Docket groupRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) //此接口对应的文档信息.groupName("收费管理系统接口") //分组接口名称.select().apis(RequestHandlerSelectors.basePackage("com.xci.operation.management.api")) //分组接口扫描的包路径.paths(PathSelectors.any()).build();}/*** 设置文档的相关信息*/private ApiInfo apiInfo() {return new ApiInfoBuilder().title("XCI客户收费管理系统") //文档标题.description("描述") //文档描述.termsOfServiceUrl("") //项目或者团队网站.contact(new Contact("吕艳阳", "", "lvyanyang@xci96716.com")) //项目或者负责人联系方式.version("1.0") //文档版本.build();}}
11. 新建GlobalExceptionHandler文件
在包config下新建GlobalExceptionHandler.java, 全局异常处理类。
12. 修改项启动类
/*** 项目启动类* @author 吕艳阳*/@EnableCaching@EnableTransactionManagement@MapperScan(basePackages = {"com.xci.sys.dao","系统包路径.dao"})@SpringBootApplication(scanBasePackages = {"com.xci.sys", "系统包路径"})public class BusScheduleServerApplication {public static void main(String[] args) {ApplicationContext app = SpringApplication.run(BusScheduleServerApplication.class, args);SpringHelper.setApplicationContext(app);}}
- 代码生成器
恭喜,此时**服务端**已配置完成。
