Spring boot快速开发

来源:互联网 发布:php找工作怎么样 编辑:程序博客网 时间:2024/06/14 09:15



弄了一晚上终于找到了发技术文档的方法了,之前没有弄懂,写的文字和截图弄丢了。儿童节补




大家好,我是上海卓易大数据开发工程师,欢迎阅读本期博客。端午刚上来,任务不是很重,今天下午有幸更改接口架构,原来是使用开源的talend stdio(本人才是用3周左右,就发现问题太多,可能自己愚笨吧,毕竟都说这个是开发大数据企业级最智能的工具了)开发restful接口,首先交代一下业务场景。

大数据分析的维度表需要向前台业务系统输送,那么,之前的开发方式就不介绍了,不可控制。会报一些难以控制的错误,随便来一个不可控的截图吧。

 Talend

这种所有方法写一个类2万多行很不符合我们的分层、分布式应用的编码风格。还有一个缺点就是,他会多个对象返回json数组,但是一条记录一个对象却不是数组,让前台开发人员需要多些一个判断方法,等等这些劣势(其实还有很多,这里就不一一举例了)。那么,现在我们不得不想别的架子来解决这些我们经常遇到的细节性问题。

 

正餐来了,那么,我想到了曾经在太平洋保险项目组中,大家搭建的spring boot、cloud、mvc、spring admin、security、mybatis、maven这一套架子,那么,闲来自己搭了一搭,正好以后开发起来上手也快。那么,就让这篇博客也作为一篇文档吧,以后遇到类似的问题,其他开发的朋友包括自己也能够迅速搭建微服务开发体系。

请注意理论的事情,推荐大家看一下微服务相关的书籍,例如spring boot揭秘 或者 spring boot实战 ,这里我们只介绍最快最基本最快速上手的开发方式。

1.idea,那么,这个仁者见仁智者见智,以前两年前玩过这个ide,现在用eclipse觉得吧没有新意了,就用了这个,当然我本人不参与到底eclipse好还是idea好的战争,都可以用,并且都很舒服。

 注意idea的jdk编译器和maven项目导入注意idea的jdk编译器和maven项目导入

​关于idea的一些基本的问题,只列举一些吧,有兴趣可以玩玩。

比如svn:

 

​比如windows的默认insert问题:

 

​这里就不一一举例了。


2.项目结构和代码解析。

 

​可以很清晰的看到层次结构吧,没毛病。

3.pom代码,添加dependency依赖,这里我还没有搭建本地maven库,默认用项目的吧:

<?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>cn.7player.framework</groupId>
<artifactId>springboot-mybatis</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.spring>3.2.9.RELEASE</version.spring>
<version.jackson>2.4.4</version.jackson>
<java.version>1.7</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-thymeleaf</artifactId>
</dependency>
<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>


<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>

<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>fastjson</artifactId>
<version>1.1.43</version>
</dependency>
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.9.5</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${version.jackson}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${version.jackson}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${version.jackson}</version>
</dependency>
</dependencies>


<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>



4.项目demo的实体代码,这个不需要解释了,映射实体类:

 

5.映射mapper代码,映射mybaties的命名id方法:

 

6.mybatis配置方法,这个mybatis最基本的使用方法,配置属性id、返回属性,输入参数属性,比较简单,关于公司私密的表名称都化掉了,没办法,签了保密协议的。

 

7.进入到service层,调用封装了实体映射的mapper,用于查询逻辑,在此我想继续声明,因为是半天时间临时搭建,有很多代码优化和安全都没有做,只是做一个快速上手攻略,那后期会有详尽的项目开发补充文档的吧。

 

走到这里我依然不用详细解释,代码和注释也比较简单,如你们所见,注入mapper之后,我们将来会在controller层调用service层的注解方法,那么我们传入参数也许有String、Map、List、Object[]或是别的什么对象之类的随意,调用mybitis映射方法之前就知道要返回的对象,封装好了返回即可。接着向前面走吧,前面很精彩。



8.controller层:

 

 

controller返回的东西很多种,那稍后我们整体走过之后再回来看看多种多样的参数列表类型和demo吧。简单解释就是restful的接口调用给予参数,我们接受参数,并调用注解来的service方法传递,拿到mapper查询的结果返回出去,简单吧。(关于controller的多种多样我后文接着说)


9.关于配置:

log4j配置:

 

application.properties:

 

这个根据自己情况配置吧。

我们要是看业务的话,去前台调用试试吧。


10.关于启动项目,开启扫描的Application类:


package cn.no7player;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import 
public class Application {
private static Logger logger = Logger.getLogger(Application.class);

//DataSource配置
@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource() {
return new org.apache.tomcat.jdbc.pool.DataSource();
}

//提供SqlSeesion
@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
logger.info("SpringBoot Start Success");
}

}




这个有两点需要注意,就是扫描mapper的包路径和sqlsession的bean扫描mybatis文件的文件路径。

启动。url和数据库示例如下:

 

 

 

那如果要传一个参数,返回json数据格式,而不需要做页面的跳转呢,没问题。刚才不是给看了controller吗,以下是代码测试页面:

看一下,12号和22号的日活跃吧。

 

 

那如果要两个或两个以上的参数呢?都可以哦:

 


这几种组合就和原来的controller的requestMapping接参数方式一样,restful风格而已。举个几个接参例子吧。​

 

 



好了,这个东西后面还得继续研究,这篇就这样吧,等到研究差不多,会补充一篇文档的。时间充裕,就写一些别的项目技术文档,例如很想把那个短信过滤的mapreduce代码拿出来记录、分享一下,毕竟实际开发项目和helloworld、wordcount思路上面不太一样。

原创粉丝点击