springboot总结
-
spring boot 父节点依赖,引入这个之后相关的引入就不需要添加version配置,spring boot会自动选择最合适的版本进行添加。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent> <!--java.version 指定jdk版本号--> <java.version>1.8</java.version> <!--添加spring-boot-starter-web依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
引入fastjson。
注意:这里要说下很重要的话,官方文档说的1.2.10以后,会有两个方法支持HttpMessageconvert,一个是FastJsonHttpMessageConverter,支持4.2以下的版本,一个是FastJsonHttpMessageConverter4支持4.2以上的版本,具体有什么区别暂时没有深入研究。这里也就是说:低版本的就不支持了,所以这里最低要求就是1.2.10+。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency>
-
配置fastjson-两种方法。
3.1第一种方法
1)启动类继承extends WebMvcConfigurerAdapter。
2)覆盖方法configureMessageConverters。
@SpringBootApplication public class ApiCoreApp extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.configureMessageConverters(converters); FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat ); fastConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastConverter); } }
3.2第二种方法
1)注入Bean : HttpMessageConverters
@Bean public HttpMessageConverters fastJsonHttpMessageConverters() { FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); fastConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter<?> converter = fastConverter; return new HttpMessageConverters(converter); }
-
使用devtools热部署。
4.1添加依赖包。
4.2添加spring-boot-maven-plugin插件。
说明:1)devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),因为其采用的虚拟机机制,该项重启是很快的。
2)devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现(这里注意不同的模板配置不一样)
3)测试:修改类-->保存:应用会重启;修改配置文件-->保存:应用会重启;修改页面-->保存:应用会重启,页面会刷新(原理是将spring.thymeleaf.cache设为false)。
注意:1)工具不能使用分析--对应的spring-boot版本是否正确,这里使用的是1.4.1版本;
2)是否加入plugin以及属性<fork>true</fork> ;
3)Eclipse Project 是否开启了Build Automatically(我自己就在这里栽了坑,不知道为什么我的工具什么时候关闭了自动编译的功能)。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>true</scope> </dependency> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--fork : 如果没有该项配置,devtools不会起作用,即应用不会restart --> <fork>true</fork> </configuration> </plugin> </plugins> </build>
-
添加spring data jpa-hibernate
步骤:
1)在pom.xml添加mysql,spring-data-jpa依赖;
2)在application.properties文件中配置mysql连接配置文件;
3)在application.properties文件中配置jpa配置信息;
<!--添加依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
#在application.properties文件中配置mysql连接配置文件# ######################################################## ###datasource ######################################################## spring.datasource.url = jdbc:mysql://localhost:3306/test spring.datasource.username = root spring.datasource.password = root spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.max-active=20 spring.datasource.max-idle=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 #在application.properties文件中配置JPA信息# ######################################################## ### Java Persistence Api ######################################################## # Specify the DBMS spring.jpa.database = MYSQL # Show or not log for each sql query spring.jpa.show-sql = true # Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto = update # Naming strategy #[org.hibernate.cfg.ImprovedNamingStrategy #org.hibernate.cfg.DefaultNamingStrategy] spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy # stripped before adding them to the entity manager) spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
-
Spring Boot Spring Data JPA介绍
6.1Repository接口。
Repository 接口是 Spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法 : public interface Repository<T, ID extends Serializable> { }。
注意:1) Repository是一个空接口,即是一个标记接口;2)若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repository Bean纳入到IOC容器 中,进而可以在该接口中定义满足一定规范的方法。
3) 实际上也可以通过@RepositoryDefinition,注解来替代继承Repository接口。
4) 查询方法以find | read | get开头;
5) 涉及查询条件时,条件的属性用条件关键字连接,要注意的是条件属性以首字母大写。
6)使用@Query注解可以自定义JPQL语句实现更灵活的查询。
6.2CrudRepository接口。
CrudRepository 接口提供了最基本的对实体类的添删改查操作 :
1)T save(T entity);//保存单个实体;
2)Iterable<T> save(Iterable<? extends T> entities);//保存集合
3)T findOne(ID id);//根据id查找实体
4)boolean exists(ID id);//根据id判断实体是否存在
5)Iterable<T> findAll();//查询所有实体,不用或慎用!
6)long count();//查询实体数量
7)void delete(ID id);//根据Id删除实体
8)void delete(T entity);//删除一个实体
9)void delete(Iterable<? extends T> entities);//删除一个实体的集合
10) void deleteAll();//删除所有实体,不用或慎用!
6.3PagingAndSortingRepository接口。
该接口提供了分页与排序功能 :
1)Iterable<T> findAll(Sort sort); //排序
2)Page<T> findAll(Pageable pageable); //分页查询(含排序功能) -
全局异常捕捉。
新建一个类GlobalDefaultExceptionHandler,在class注解上@ControllerAdvice,在方法上注解上@ExceptionHandler(value = Exception.class),具体代码如下:
@ControllerAdvice public class GlobalDefaultExceptionHandler{ @ExceptionHandler(value = Exception.class) public void defaultErrorHandler(HttpServletRequest req, Exception e) { }
-
其他配置。
Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入:
#访问地址就是http://ip:port/spring-boot
server.context-path=/spring-boot
#server.port=8080
#server.address= # bind to a specific NIC
#server.session-timeout= # session timeout in seconds
#the context path, defaults to '/'
#server.context-path=/spring-boot
#server.servlet-path= # the servlet path, defaults to '/'
#server.tomcat.access-log-pattern= # log pattern of the access log
#server.tomcat.access-log-enabled=false # is access logging enabled
#server.tomcat.protocol-header=x-forwarded-proto # ssl forward headers
#server.tomcat.remote-ip-header=x-forwarded-for
#server.tomcat.basedir=/tmp # base dir (usually not needed, defaults to tmp)
#server.tomcat.background-processor-delay=30; # in seconds
#server.tomcat.max-threads = 0 # number of threads in protocol handler
#server.tomcat.uri-encoding = UTF-8 # character encoding to use for URL decoding
上一篇: Python3迭代器及其使用
下一篇: 第一阶段:CSS初步探讨