国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

分布式軟件架構(gòu)整合(一)

mochixuan / 2040人閱讀

摘要:通過整合及可以實現(xiàn)數(shù)據(jù)庫查詢后將數(shù)據(jù)持久化。但是可能出現(xiàn)幻像讀這是花費最高代價但是最可靠的事務(wù)隔離級別。事務(wù)被處理為順序執(zhí)行。

所需技術(shù):spring、mybatis、druid、flyway、logback、nodejs、html、css3 ;
目標(biāo):創(chuàng)建一個業(yè)務(wù)框架,后端采用spring+mybatis,中間層采用node,前端html5,css3等;

工程建成后目錄如下:

整合步驟:

1、創(chuàng)建maven工程,添加所有目標(biāo)依賴;
2、創(chuàng)建spring目錄,創(chuàng)建spring基礎(chǔ)配置;
3、整合mybatis、durid、flyway;
4、整合logback工具;
5、添加測試類,測試通過,第一階段完成;

一、創(chuàng)建soyann工程,添加項目依賴(IDEA)

1、創(chuàng)建一個新的工程soyann,添加business模塊,目錄結(jié)構(gòu)如下;

2、添加所有模塊所需要的依賴,補(bǔ)全pom.xml



    4.0.0

    com.soyann
    Business
    1.0-SNAPSHOT
    war
    Business Maven Webapp
    http://maven.apache.org

    
        1.2
        4.12
        1.1.2
        5.1.39
        1.7.21
        1.1.0
        3.4.1
        1.1.7
        4.2.0
        1.2.33
        4.3.0.RELEASE
        5.0.3
        3.4
        1.2
        1.3.0
        1.0.3
        1.8.6
        3.3.1
        1.3
        1.0
    

    
        
        
            junit
            junit
            ${junit.version}
        

        
        
            org.slf4j
            slf4j-api
            ${slf4j.version}
        
        
            org.slf4j
            jul-to-slf4j
            ${slf4j.version}
        
        
            ch.qos.logback
            logback-core
            ${logback.version}
        
        
            ch.qos.logback
            logback-classic
            ${logback.version}
            
                
                    org.slf4j
                    slf4j-api
                
            
        
        
            commons-logging
            commons-logging
            ${commons-logging.version}
        
        
        
            org.logback-extensions
            logback-ext-spring
            0.1.4
        
        
        
            org.apache.commons
            commons-lang3
            ${commons-lang3.version}
        
        
            org.apache.commons
            commons-pool2
            2.4.2
        

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.springframework
            spring-oxm
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        

        
            org.springframework
            spring-jdbc
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            org.springframework
            spring-aop
            ${spring.version}
        

        
            org.springframework
            spring-context-support
            ${spring.version}
        

        
            org.springframework
            spring-test
            ${spring.version}
        
        

        
        
            org.aspectj
            aspectjweaver
            ${aspectj.version}
        
        
            org.aspectj
            aspectjrt
            ${aspectj.version}
        
        
            asm
            asm
            ${asm.version}
        
        
            org.hamcrest
            hamcrest-core
            ${hamcrest.version}
        
        
            aopalliance
            aopalliance
            ${aopalliance.version}
        


        
        
            org.mybatis
            mybatis-spring
            ${mybatis-spring.version}
        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
        
            org.mybatis.generator
            mybatis-generator-core
            1.3.5
            jar
            test
        
        
            org.mybatis.caches
            mybatis-ehcache
            ${mybatis-ehcache.version}
        
        
            com.github.pagehelper
            pagehelper
            ${pagehelper.version}
        
        

        
        
            org.flywaydb
            flyway-core
            ${flywaydb.version}
        
        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        
        
        
            com.alibaba
            druid
            ${druid.version}
        

        
        
            com.alibaba
            fastjson
            ${fastjson.version}
        

        
        
            jstl
            jstl
            ${jstl.version}
        
        
            taglibs
            standard
            ${taglibs.version}
        
    

    
        Business
        
            
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.5
                
                    
                        mysql
                        mysql-connector-java
                        ${mysql.version}
                    
                
                
                    true
                    true
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.6
                    1.6
                
            
        
    
二、創(chuàng)建spring配置項

1、創(chuàng)建spring-applicationContest.xml,作為spring配置的根文件。在添加其它模塊前,創(chuàng)建一個根配置,作為各模塊的公共配置項;

2、根配置的內(nèi)容如下,后期隨著添加各個模塊,將會作相應(yīng)的改動。




    
    

    
    
    
    
三、整合mybatis,druid,flyway工具

1、druid是阿里巴巴的數(shù)據(jù)庫連接池。flyway為數(shù)據(jù)庫版本管理工具。通過整合mybatis、druid及flyway,可以實現(xiàn)數(shù)據(jù)庫查詢后將數(shù)據(jù)持久化。接下來按順序一個個文件添加進(jìn)來。
2、添加spring-flyway.xml文件,配置如下:




    
    
        
        
        
        
        
        
        
            
                
            
        
    

這里需要注意的是,中描述的dataSource是指spring-mybatis.xml中描述的dataSource。中,描述了你數(shù)據(jù)庫腳本的版本目錄,工具從db/migration這個目錄下讀取數(shù)據(jù)庫的腳本。

3、添加jdbc.properties文件,配置如下:

#數(shù)據(jù)庫驅(qū)動
jdbc.driver=com.mysql.jdbc.Driver
#數(shù)據(jù)庫連接url
jdbc.url=jdbc:mysql://127.0.0.1:3306/soyann?relaxAutoCommit=true&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&failOverReadOnly=false
#數(shù)據(jù)庫連接用戶名
jdbc.username=root
#數(shù)據(jù)庫連接密碼
jdbc.password=AXUE+dhMhCrtVF1usq8EB7bv4kBhkv6n81KtiG9HRnPEoQjWsPax84mMFAQONb3ireEifDcFFxdRnrZYomc3pA==
#配置數(shù)據(jù)庫密碼是否需要解密,這里需要注意druid 1.0.16版本及以上的解密時需要同時配置publicKey,配置方式如下
druid.connectionProperties=config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALBt81XVN/W8vchTvUPwUD6NLk9LpwRRhY/+TQvkvM1hZIpzX1+SB1JLjcWcIwu4AkELau0pyjJ4LfC0LoOA/q0CAwEAAQ==
#配置初始化大小、最小、最大
druid.initialSize=10
#最小連接池數(shù)量
druid.minIdle=10
#最大連接池數(shù)量
druid.maxActive=50
#獲取連接時最大等待時間,單位毫秒
druid.maxWait=5000
#配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒,有兩個含義:1) Destroy線程會檢測連接的間隔時間,如果連接空閑時間大于等于minEvictableIdleTimeMillis則關(guān)閉物理連接;2) testWhileIdle的判斷依據(jù)
druid.timeBetweenEvictionRunsMillis=60000
#配置一個連接在池中最小生存的時間,單位是毫秒
druid.minEvictableIdleTimeMillis=300000
#驗證語句
druid.validationQuery=SELECT "x"
#檢測連接是否有效的超時時間,單位:秒。底層調(diào)用jdbc Statement對象的void setQueryTimeout(int seconds)方法
druid.validationQueryTimeout=5
#申請連接時執(zhí)行validationQuery檢測連接是否有效,做了這個配置會降低性能
druid.testOnBorrow=false
#歸還連接時執(zhí)行validationQuery檢測連接是否有效,做了這個配置會降低性能
druid.testOnReturn=false
#建議配置為true,不影響性能,并且保證安全性。申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測連接是否有效
druid.testWhileIdle=true
#打開PSCache,并且指定每個連接上PSCache的大小,如果用Oracle,則把poolPreparedStatements配置為true,mysql可以配置為false。分庫分表較多的數(shù)據(jù)庫,建議配置為false
druid.poolPreparedStatements=false
druid.maxPoolPreparedStatementPerConnectionSize=100
#定期把監(jiān)控數(shù)據(jù)輸出到日志中
druid.timeBetweenLogStatsMillis=300000
#配置監(jiān)控統(tǒng)計攔截的filters
druid.filters=config,stat,slf4j
#使用全局監(jiān)控
druid.useGlobalDataSourceStat=true
#對于長時間不使用的連接強(qiáng)制關(guān)閉,禁用此配置,設(shè)置為false
druid.removeAbandoned=false
#超過30分鐘開始關(guān)閉空閑連接
druid.removeAbandonedTimeout=1800
#將當(dāng)前關(guān)閉動作記錄到日志
druid.logAbandoned=true

這里采用了數(shù)據(jù)庫連接密碼加密功能,怎樣生成連接加密下面再分解。

4、添加實體文件。在Resource根目錄下,添加generatorConfig.xml配置,自動生成實體文件,內(nèi)容如下:




    
    

    
    

        

        
        
            
            
            
        

        


        
        
            
            
        
        
        
            
        

        
        
            
            
        
        
        
            
        
        
        
            
        

        
        

接下來在idea中添加啟動命令:


添加此配置的作用是自動生成數(shù)據(jù)表實體跟mapper文件,無須手寫容易出錯。運行命令,將生成的實體文件添加到對應(yīng)目錄下:

5、添加spring-mybatis.xml文件




    
        
        
        
        
    

    
        
        
    

    
    
        
        
    

    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        
        

        
        

        
            
                
                
                
            
        
    

    
    
        
        
        
        
        
        
        
    

    
    
        
        
    

    
    
        
    

    
    
    
        
            
            
            
            
            
            
            
            
            
            
            

            
            
            
            
            

            
        
    


    
        
        
        
    

    
    
    
    
        
            
                com.soyann.business.*.service.*
                com.soyann.business.*.mapper.*
            
        
    

添加文件后,發(fā)現(xiàn)還有點問題,spring-flyway.xml及spring-mybatis.xml不能相互調(diào)用,且往下。

6、更新spring-applicationContext.xml文件,引用spring-flyway.xml、spring-mybatis.xml、jdbc.properties配置




    
    
    

    
    
    
    

    
    
        
        
        
            
                classpath:jdbc.properties
                
            
        
    

    
    
    

7、添加web.xml文件,配置數(shù)據(jù)庫連接池等內(nèi)容:



    
    
        org.springframework.web.context.request.RequestContextListener
    

    
    
        webAppRootKey
        Business.root
    


    
    
        DruidWebStatFilter
        com.alibaba.druid.support.http.WebStatFilter
        
            exclusions
            *. js ,*. gif ,*. jpg ,*. png ,*. css ,*. ico ,/ druid /*
        
    
    
        DruidWebStatFilter
        /*
    
    
        DruidStatView
        com.alibaba.druid.support.http.StatViewServlet
    
    
        DruidStatView
        /druid/*
    
    


8、在IDEA工具中引入spring及web文件

四、整合logback工具

1、在resource目錄下添加logback.xml,內(nèi)容如下;










    
    
    
    
    
    

    
    
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} - %msg%n
            UTF-8
        
    

    
    
    
        
        
            ERROR
            ACCEPT
            DENY
        
        
        
            
            ${FILE_DIR}/%d{yyyy-MM-dd}/${FILE_NAME}_error.log
            
            ${maxHistory}
        

        
        

        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
        
    

    
    
        
        
            WARN
            ACCEPT
            DENY
        
        
            
            ${FILE_DIR}/%d{yyyy-MM-dd}/${FILE_NAME}_warn-log.log
            
            
            ${maxHistory}
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
        
    

    
    
        ${FILE_DIR}/${FILE_NAME}.log
        
            
            ${FILE_DIR}/${FILE_NAME}.%d{yyyyMMdd}.%i.log
            50MB
            
            30
        
        
            %d{HH:mm:ss} [%thread] %-5level %logger{0} - %msg%n
            UTF-8
        
        
        
            INFO
        
    

    
    
        ${FILE_DIR}/${FILE_NAME}_debug.log
        
            
            ${FILE_DIR}/${FILE_NAME}_debug.%d{yyyyMMdd}.%i.log
            50MB
            
            30
        
        
            %d{HH:mm:ss} [%thread] %-5level %logger{0} - %msg%n
            UTF-8
        
        
            DEBUG
            ACCEPT
            DENY
        
    

    
    
        
        0
        
        512
        
        5000
        
        
    


    
    
        
        
            TRACE
            ACCEPT
            DENY
        
        
            
            ${FILE_DIR}/%d{yyyy-MM-dd}/${FILE_NAME}_trace-log.log
            
            
            ${maxHistory}
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
        
    



    
        
    

    
        
    

    
        
        
    

    

    
    
        
        
        
        
        
        
        
        
    

2、web.xml中注冊logback:


    
        contextConfigLocation
        classpath:spring/spring-applicationContext.xml
    
    
        logbackConfigLocation
        classpath:logback.xml
    
    
        ch.qos.logback.ext.spring.web.LogbackConfigListener
    
    
        org.springframework.web.context.ContextLoaderListener
    
    

到這里,spring+mybatis框架整合基本完成,下面就來測試下這個框架吧。

五、框架測試

1、resource/db/migration添加數(shù)據(jù)庫腳本;這里我用了別人創(chuàng)建好的,不再貼代碼;
2、在service目錄下添加一個接口及實現(xiàn)類,代碼如下:

IUserService.java

package com.soyann.business.user.service;

import com.soyann.business.user.model.UserEntity;

import java.util.List;

/**
 * @ProjectName: soyann
 * @FileName: com.soyann.business.user.service
 * @Description: (do what)
 * @Copyright: Copyright(C) 2016-2017 All rights Reserved
 * @Company: ShenZhen Information Technology Co.,LTD.
 * @Author: dell657 neil
 * @Version V1.0
 * @Date: 2017/10/28
 * 

* Modification History: * Date Author Version Discription * ----------------------------------------------------------------------------------- * 2017/10/28 neil 1.0 1.0 * Why & What is modified: <修改原因描述> */ public interface IUserService { UserEntity getUserById(int userId); List getAllUser(); }

UserServiceImpl.java

package com.soyann.business.user.service.impl;

import com.soyann.business.user.mapper.UserMapper;
import com.soyann.business.user.model.UserEntity;
import com.soyann.business.user.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @ProjectName: soyann
 * @FileName: com.soyann.business.user.service.impl
 * @Description: (do what)
 * @Copyright: Copyright(C) 2016-2017 All rights Reserved
 * @Company: ShenZhen Information Technology Co.,LTD.
 * @Author: dell657 neil
 * @Version V1.0
 * @Date: 2017/10/28
 * 

* Modification History: * Date Author Version Discription * ----------------------------------------------------------------------------------- * 2017/10/28 neil 1.0 1.0 * Why & What is modified: <修改原因描述> */ @Service("userService") public class UserServiceImpl implements IUserService { @Autowired(required=false) private UserMapper userMapper; @Override public UserEntity getUserById(int userId) { return userMapper.selectByPrimaryKey(userId); } @Override public List getAllUser() { return userMapper.getAllUser(); } }

3、在test目錄下添加測試類TestMyBatis.java,代碼如下:

package com.soyann.business.mybatis;

import com.alibaba.fastjson.JSON;
import com.soyann.business.user.model.UserEntity;
import com.soyann.business.user.service.IUserService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;


/**
 * @ProjectName: soyann
 * @FileName: com.soyann.business.mybatis
 * @Description: (do what)
 * @Copyright: Copyright(C) 2016-2017 All rights Reserved
 * @Company: ShenZhen Information Technology Co.,LTD.
 * @Author: neil
 * @Version V1.0
 * @Date: 2017/10/28
 * 

* Modification History: * Date Author Version Discription * ----------------------------------------------------------------------------------- * 2017/10/28 neil 1.0 1.0 * Why & What is modified: <修改原因描述> */ //表示繼承了SpringJUnit4ClassRunner類 /*@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:spring/spring-applicationContext.xml"})*/ public class TestMyBatis { private static Logger logger = LoggerFactory.getLogger(TestMyBatis.class); @Resource private IUserService userService = null; @Before public void before() { //使用"spring.xml"和"spring-mybatis.xml"這兩個配置文件創(chuàng)建Spring上下文 ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring/spring-applicationContext.xml", "spring/spring-mybatis.xml"}); //從Spring容器中根據(jù)bean的id取出我們要使用的userService對象 userService = (IUserService) ac.getBean("userService"); } @Test public void test1() { logger.info("任務(wù)開始執(zhí)行..."); UserEntity userEntity = userService.getUserById(4); // System.out.println(user.getUserName()); // logger.info("值:"+user.getUserName()); //System.out.println(JSON.toJSONString(userEntity)); logger.info(JSON.toJSONString(userEntity)); logger.info("任務(wù)執(zhí)行結(jié)束"); logger.error("任務(wù)執(zhí)行結(jié)束"); logger.debug("任務(wù)執(zhí)行結(jié)束"); } }

添加代碼后,執(zhí)行代碼,查看控制臺輸出結(jié)果。

輸出結(jié)果正確,證明本框架已經(jīng)初步整合。本文到這里結(jié)束

參考資料:傳送門

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67919.html

相關(guān)文章

  • 哪種Scale out架構(gòu)能更有效滿足布式計算?

    摘要:那么,的架構(gòu)是否真的需要多臺小計算量的節(jié)點來實現(xiàn)才是最完美的架構(gòu)呢,讓我們來細(xì)細(xì)剖析什么樣的架構(gòu)才能最有效的滿足分布式計算的特點。近些年,隨著分布式計算的越來越火熱,Scale out分布式應(yīng)用架構(gòu)也如雨后春筍般不斷涌現(xiàn),大到Big Data平臺架構(gòu),小到前端應(yīng)用App的架構(gòu),似乎都要基于Scale out 的架構(gòu)才算是與時俱進(jìn)的先進(jìn)架構(gòu)。分布式架構(gòu)的優(yōu)勢顯而易見,一方面,Scale out...

    idisfkj 評論0 收藏0
  • 【十年磨劍】我們能從阿里架構(gòu)師的身上學(xué)到什么?

    摘要:正文本文是看到阿里巴巴系統(tǒng)架構(gòu)師黃勇的采訪記錄有感而發(fā),如有侵權(quán),請聯(lián)系我。下面就一起來看看阿里架構(gòu)師的十年架構(gòu)路。抱著這樣的信心,我加入了易傳媒,擔(dān)任系統(tǒng)架構(gòu)師職位。 showImg(https://segmentfault.com/img/remote/1460000016748965); 前言 做技術(shù)的,一定不能放棄技術(shù)。在精進(jìn)技術(shù)的同時完善其他方面的能力,十年如一日。不忘初心,...

    OnlyMyRailgun 評論0 收藏0
  • 布式軟件架構(gòu)整合(二)

    摘要:續(xù)上篇所需技術(shù)等說明本編講解一個分布式架構(gòu)的整個流程,首先對上編中的工程作一些小小的改動,以支持接下來的實驗。本篇中,定義了服務(wù)提供者,注冊中心及客戶端消費者三者關(guān)系。一服務(wù)提供者這里首先對服務(wù)端進(jìn)行改造。 (續(xù)上篇) 所需技術(shù):spring、mybatis、druid、flyway、logback、nodejs,zookeeper,dubbo,dubbo-admin等;說明:本編講解...

    you_De 評論0 收藏0
  • 數(shù)據(jù)中心需要條25G新“跑道”

    摘要:面向未來的戰(zhàn)略設(shè)計,年開放網(wǎng)絡(luò)戰(zhàn)略升級,進(jìn)入開放網(wǎng)絡(luò)時代,基于軟件定義數(shù)據(jù)中心提供全方位的解決方案,建立一個開放式的網(wǎng)絡(luò)體系。開放網(wǎng)絡(luò)需要性能更強(qiáng)的硬件平臺在軟件定義數(shù)據(jù)中心戰(zhàn)略進(jìn)程中,計算存儲網(wǎng)絡(luò)三者不可或缺,相互配合又相互影響。現(xiàn)在,企業(yè)應(yīng)用進(jìn)入云計算階段,企業(yè)對IT架構(gòu)虛擬化的需求越來越高,虛擬機(jī)的頻繁創(chuàng)建需要網(wǎng)絡(luò)自動快速來配置,同時網(wǎng)絡(luò)安全隔離、多個數(shù)據(jù)中心之間的容災(zāi),對網(wǎng)絡(luò)提出了更...

    jindong 評論0 收藏0
  • 云計算怎樣影響網(wǎng)絡(luò)基礎(chǔ)架構(gòu)

    摘要:在該階段,云計算的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)如何結(jié)合新的趨勢,更好地支撐云計算從試點到實用階段的轉(zhuǎn)型,顯得尤為關(guān)鍵。對未來云計算網(wǎng)絡(luò)架構(gòu)的幾點思考彈性網(wǎng)絡(luò)易管理網(wǎng)絡(luò)和開放的網(wǎng)絡(luò),這個需求的提出是適應(yīng)未來云計算的支撐關(guān)鍵。 針對云計算的變革,文章分析云計算發(fā)展的幾大趨勢,闡述適應(yīng)云計算的關(guān)鍵是要提供高彈性、高擴(kuò)展性、易管理和開放的網(wǎng)絡(luò),并建議未來理想的云計算網(wǎng)絡(luò)架構(gòu)應(yīng)是一個無阻塞、可自愈、即插即用的黑盒網(wǎng)絡(luò)...

    stackfing 評論0 收藏0

發(fā)表評論

0條評論

mochixuan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<tr id="w0s2e"></tr>
      <samp id="w0s2e"><tbody id="w0s2e"></tbody></samp>
            <