綜合學習SpringBoot+Dubbo+Zookeeper,結合平時用的架構,對常用的架構整合了一下,從架構到後台到前端,如有侵權,請聯絡刪除。
後台架構springboot+mybatis+dubbo+zookeeper+redis+nginx,其中redis做資料緩衝,nginx做頁面轉寄,資料庫用mysql。首先springboot-mybatis-dubbo-zookeeper目錄架構如下:
首先項目外層定義版本等的pom檔案如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cn.bee</groupId> <artifactId>springboot-mybatis-dubbo-zookeeper</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>springboot-mybatis-dubbo-zookeeper</name> <description>springboot-mybatis-dubbo-zookeeper</description> <properties> <jdk.version>1.7</jdk.version> <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version> <maven-resources-plugin.version>2.6</maven-resources-plugin.version> <org.mybatis.generator.version>1.3.2</org.mybatis.generator.version> <mybatis.version>3.1.1</mybatis.version> <mybatis-spring.version>1.2.0</mybatis-spring.version> <mybatis-spring-boot>1.2.0</mybatis-spring-boot> <dubbo.version>2.5.3</dubbo.version> <zookeeper.version>3.3.6</zookeeper.version> <zkclient.version>0.1</zkclient.version> <com.alibaba.druid.version>0.2.6</com.alibaba.druid.version> <spring-boot-starter-redis-version>1.3.2.RELEASE</spring-boot-starter-redis-version> </properties> <!-- springboot使用1.4.1.RELEASE版本 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> <modules> <!-- 主要放實體、介面、也可以放一些公用的工具類工程--> <module>edu-web-common</module> <!-- 服務提供者工程--> <module>edu-web-server</module> <!-- 服務消費者工程 --> <module>edu-web-client</module> </modules> <!--http://blog.csdn.net/shawearn1027/article/details/55098024--></project>
edu-web-client下面的Application.java,主要用註解方式載入Bean,而且服務提供者的啟動main方法也寫在這下面,代碼如下:
@MapperScan("com.cn.bee.dao")@SpringBootApplication@ImportResource(locations={"dubbo-provider.xml"})public class Application { /** * 1.啟動app層的main方法之後,會自動載入bean, @ConfigurationProperties(prefix="spring.datasource")會自動去application.properties * 下面以spring.datasource開頭的有關資料庫連接的設定檔 * 2.通過註解@MapperScan("com.cn.bee.dao")自動掃描mybatis的mapper檔案 */ private static volatile boolean running = true; private static Logger logger = Logger.getLogger(Application.class); //DataSource配置 @Bean @ConfigurationProperties(prefix="spring.datasource") public DataSource dataSource() { return new com.alibaba.druid.pool.DruidDataSource(); } //提供SqlSeesion @Bean public SqlSessionFactory sqlSessionFactoryBean() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); // 配置mapper的掃描,找到所有的mapper.xml對應檔 sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml")); // 載入全域的設定檔 sqlSessionFactoryBean.setConfigLocation( new DefaultResourceLoader().getResource("classpath:mybatis-config.xml")); return sqlSessionFactoryBean.getObject(); } @Bean public PlatformTransactionManager transactionManager() { return new DataSourceTransactionManager(dataSource()); } /** * Main 方法啟動項 */ public static void main(String[] args) { SpringApplication.run(Application.class, args); System.out.println("============= APP Start ON SpringBoot Success ============="); synchronized (Application.class) { while (running) { try { Application.class.wait(); } catch (Throwable e) { } } } }}
啟動edu-web-client的main方法之後,會自動載入bean, @ConfigurationProperties(prefix="spring.datasource")會自動去application.properties下面以spring.datasource開頭的有關資料庫連接的設定檔,application.properties如下:
spring.datasource.url=jdbc:mysql://localhost:3306/springbootdb?useUnicode=true&characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverdubbo.registry.center=127.0.0.1:2181dubbo.protocol.port=20885
服務提供者的dubbo-provider.xml,代碼如下:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:util="http://www.springframework.org/schema/util" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <context:component-scan base-package="com.cn.bee.service.*"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <dubbo:application name="springBoot-service-provider-app" /> <!-- Dubbo登入位址 --> <dubbo:registry protocol="zookeeper" address="${dubbo.registry.center}" /> <dubbo:protocol name="dubbo" port="${dubbo.protocol.port}" threadpool="cached" threads="1000" accepts="2000" serialization="java"/> <dubbo:service interface="com.cn.bee.service.UserService" ref="userService" timeout="3000" ></dubbo:service> <dubbo:service interface="com.cn.bee.service.DictService" ref="dictService" timeout="3000" ></dubbo:service> <dubbo:service interface="com.cn.bee.service.AreaService" ref="areaService" timeout="3000" ></dubbo:service></beans>
edu-web-client中其他層次的代碼就省略了,有需要可以聯絡我瞭解。同時 自己本地可以下載一個單機版的zookeeper
edu-web-common:主要放實體、介面、也可以放一些公用的工具類等待。
到了這裡,我們的服務已經可以完成了,運行application.Java的main方法,我們可以看到控制台如下,就代表成功了。
然後我們到edu-web-server,主要做服務端
application.properties如下: