SpringBoot全家桶
前言
Spring简化了Java的开发,而SpringBoot简化了Spring。本文用SpringBoot采用分层的结构整合了filter,aspect,mybaits,logback,redis,rocketmq和dubbo等框架。这是一个比较接近实际项目的版本。
mybaits
在application.properties配置数据源和目录就行了,不用配置SqlSessionFactory和TransactionManager,如下
#mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mysql?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=111111
# mybatis
# mybatis.config-location=classpath:/mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath*:/mappers/*.xml
mybatis.type-aliases-package=com.example.demo.repository.entity
另外还需要设置MapperScan,如
@SpringBootApplication(scanBasePackages = "com.example.demo")
@MapperScan("com.example.demo.repository.dao")
public class StartApplication { public static void main(String[] args) {
SpringApplication.run(StartApplication.class, args);
} }
logback
springboot支持logback,log4j等日志框架。如果用logback的话,springboot会默认寻找logback.xml或者logback-spring.xml。所以只需要配置一下,如
<?xml version="1.0" encoding="UTF-8" ?> <configuration scan="true">
<!-- Convert mvn placeholder to a logback managed property -->
<property name="log.home" value="../logs"/>
<property name="log.level" value="INFO"/> <!--=============================================================
=== Appender definition ===
=============================================================-->
<appender name="ROOT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.home}/root.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.home}/root.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender> <appender name="biz-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.home}/biz.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.home}/biz.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender> <!-- default -->
<root level="${log.level:-INFO}">
<appender-ref ref="ROOT"/>
<appender-ref ref="STDOUT"/>
</root> <logger name="com.example.demo.biz" level="${log.level:-INFO}" additivity="false">
<appender-ref ref="biz-appender"/>
</logger>
</configuration>
redis
redis配置非常简单,只需要加入依赖和配置就行
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
rocketmq
需要加入一个依赖,如
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
</dependency>
消费者,如
@Component
@RocketMQMessageListener(topic="${rocketmq.topic}", consumerGroup = "${rocketmq.consumer.group}")
public class MyConsumer implements RocketMQListener<String> { private final static org.slf4j.Logger logger = LoggerFactory.getLogger(MyConsumer.class);
@Override
public void onMessage(String s) {
logger.info(s);
}
}
生产者,如
@Component
public class MyProducer { @Value("${rocketmq.topic}")
private String topic; @Autowired(required = false)
private RocketMQTemplate rocketMQTemplate; public void sendMessage(Object message){
rocketMQTemplate.convertAndSend(topic, message);
}
}
dubbo
dubbo要用到zookeeper作为注册中心,所以要加入以下依赖,不过记得要排除slj4的依赖,不然会依赖冲突
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<!-- Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
</dependency>
<!-- Zookeeper dependencies -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
</dependency>
属性配置
# Spring boot application
spring.application.name=dubbo-auto-configuration-provider-demo
# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
dubbo.scan.base-packages=com.example.demo.biz.service.apiimpl
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.address=zookeeper://127.0.0.1:2181
服务提供者,需要注意的是注解@Service是org.apache.dubbo.config.annotation.Service
@Service
public class MyFacadeImpl implements MyFacade { @Override
public List<GoodVO> getHotGoodList() {
List<GoodVO> list=new ArrayList<>();
GoodVO vo=new GoodVO();
vo.setName("可乐");
vo.setPrice(new BigDecimal(2.33));
list.add(vo);
return list;
}
}
服务消费者
@Reference(check = false)
MyFacade myFacade;
源码
源码地址 https://github.com/mycaizilin/springbootdemo
划重点
重点来了。虽然我看博客也写博客,但是不建议学习技术只看博客。首先,博客上的知识不一定是对的。其次,大多数博客都是作者的当时零碎记录,是不够全面和成体系的,而且可能是过期的。我比较推荐的是看官方文档,如官网上和GitHub上的,看官方的文档看不懂再来找其他资料也不迟。下面是springboot相关的一些官方文档。
springboot官方文档: https://docs.spring.io/spring-boot/docs/2.1.4.RELEASE/reference/htmlsingle/
Dubbo Spring Boot : https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/README_CN.md
Dubbo 官方文档:: http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
Rocketmq springboot文档: https://github.com/apache/rocketmq-spring/blob/master/README_zh_CN.md
Rocketmq 官方文档: http://rocketmq.apache.org/docs/motivation/
mybaits springboot: http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
SpringBoot全家桶的更多相关文章
- Spring全家桶–SpringBoot Rest API
Spring Boot通过提供开箱即用的默认依赖或者转换来补充Spring REST支持.在Spring Boot中编写RESTful服务与SpringMVC没有什么不同.总而言之,基于Spring ...
- Spring全家桶系列–SpringBoot之AOP详解
//本文作者:cuifuan //本文将收录到菜单栏:<Spring全家桶>专栏中 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关 ...
- Spring全家桶系列–SpringBoot渐入佳境
//本文作者:cuifuan //本文将收录到菜单栏:<Spring全家桶>专栏中 首发地址:https://www.javazhiyin.com/20913.html 萌新:小哥,我在实 ...
- Spring全家桶系列–[SpringBoot入门到跑路]
//本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...
- Spring全家桶——SpringBoot之AOP详解
Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方 ...
- Spring全家桶——SpringBoot渐入佳境
Spring全家桶系列--SpringBoot渐入佳境 萌新:小哥,我在实体类写了那么多get/set方法,看着很迷茫 小哥:那不是可以自动生成吗? 萌新:虽然可以自动生成,但是如果我要修改某个变量的 ...
- Spring全家桶一一SpringBoot与Mybatis
Spring全家桶系列一一SpringBoot与Mybatis结合 本文授权"Java知音"独家发布. Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以 ...
- 10分钟详解Spring全家桶7大知识点
Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...
- 【Spring Cloud】全家桶介绍(一)
一.微服务架构 1.微服务架构简介 1.1.分布式:不同的功能模块部署在不同的服务器上,减轻网站高并发带来的压力. 1.2.集群:多台服务器上部署相同应用构成一个集群,通过负载均衡共同向外提供服务. ...
随机推荐
- 【AngularJS】通过jsonp与webmethod交互,实现ajax验证
服务端配置 1:新建一个asp.net的网站 2: 创建一个服务文件:LoginService.asmx 注意:记得取消[System.Web.Script.Services.ScriptServic ...
- 论文笔记:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
2014 ICLR 纽约大学 LeCun团队 Pierre Sermanet, David Eigen, Xiang Zhang, Michael Mathieu, Rob Fergus, Yann ...
- java并发内存模型
java中线程之间的共享变量存储在主内存(java堆)中,每个线程都有一个私有的本地内存,本地内存存储了该线程以读.写共享变量的副本.本地内存是一个抽象概念,并不真实存储.它涵盖了cache,寄存器记 ...
- 带你走进ajax(2)
ajax原理介绍 传统的web应用 传统的web应用是客户端向服务器发送一个http请求后,客户端要一直等待服务器的响应,这时用户什么事也干不成. 最麻烦的是对于表单的提交.比如用户要填写用户信息,等 ...
- 20145316《Java程序设计》第七周学习总结
20145316<Java学习程序设计>第七周学习总结 教材学习知识总结 1.在只有Lambda表达式的情况下,参数的类型必须写出来. 2.Lambda表达式本身是中性的,同样的Lambd ...
- java并发再次积累
监视器与锁之间的关系: 1.object monitor 是任何一个对象都有的内置的数据结构,它是用来协调使用当前对象的多个线程之间的执行顺序的(wait/notify),线程会block或者wait ...
- timestamp和date及datetime的区别
DATE只保存日期,不保存时分秒 DATETIME类型用在你需要同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1 ...
- 第八篇:Spark SQL Catalyst源码分析之UDF
/** Spark SQL源码分析系列文章*/ 在SQL的世界里,除了官方提供的常用的处理函数之外,一般都会提供可扩展的对外自定义函数接口,这已经成为一种事实的标准. 在前面Spark SQL源码分析 ...
- c# 调用webapi 传参 特殊字符的问题
最近在做对接数据接口,遇到一些问题,在C#后台写请求webapi的接口,但是传递过程中参数如果有特殊字符,传入过去之后又问题. 需要转换一下,通过System.Web.HttpUtility.UrlE ...
- 【Detection】R-FCN: Object Detection via Region-based Fully Convolutional Networks论文分析
目录 0. Paper link 1. Overview 2. position-sensitive score maps 2.1 Background 2.2 position-sensitive ...