zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    Java NIO使用及原理分析(三) 分类: Java 2014-03-12 17:56 447人阅读 评论(0) 收藏
    Java NIO使用及原理分析(二) 分类: Java 2014-03-12 17:55 465人阅读 评论(0) 收藏
    Java NIO使用及原理分析 ( 一 ) 分类: Java 2014-03-12 17:52 637人阅读 评论(0) 收藏
    网络编程中的Socket详解---Socket重要参数详解 分类: Android 2014-03-11 16:25 2066人阅读 评论(0) 收藏
    网络编程中的Socket详解---Socket编程实践详解 分类: Java 2014-03-11 16:19 549人阅读 评论(0) 收藏
    网络编程中的Socket详解---Delayed Ack(Ack确认延迟) && Nagle Algorithm(纳格算法) 分类: Java 2014-03-11 15:46 2316人阅读 评论(0) 收藏
    关于ThreadLocal的一道面试题(酷我公司) 分类: Android 2014-03-04 11:33 2124人阅读 评论(5) 收藏
    Java中的并发库学习总结 分类: Java 2014-03-03 15:12 3115人阅读 评论(3) 收藏
    深入解析Java中volatile关键字的作用 分类: Java 2014-03-03 13:47 1441人阅读 评论(3) 收藏
    Android源码的git下载地址 分类: Android 2014-02-27 15:26 1111人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/caizl/p/10784384.html
Copyright © 2011-2022 走看看