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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM