適合初學者的一個分布式環境搭建過程(spring boot + zookeeper + dubbo + mybatis + mysql)


本人也是才開始接觸 阿里巴巴的開源分布式框架 dubbo,因為現在微服務框架 spring boot也非常的火,然后結合dubbo的官網搭建這個開發環境。

一、首先 zookeeper作為集群管理服務器,安裝和配置在這里就不說了

 

划分為 4個項目

項目目錄如下:

4個項目的依賴關系是:common里面暫時存放的只有user一個實體類,后面陸續會加上其他的公共類,分頁,驗證等,這個項目不依賴其他的項目,其他3個項目都需要依賴它,所有這個項目需要先打包(相信做個maven項目的人應該都會-----如果對項目有所改動的話,需要先 maven clean,然后再maven install);

第二個需要打包的是 app項目,service和web項目都依賴它,然后再打包service項目,最后web項目。

hlq-commer-common 項目目錄:

 

 

hlq-commer-app 就是單獨的一個service接口,因為只是搭建個環境,就只寫了一個service和 一個方法,

 

service 代碼如下:(就是根據用戶id獲取一個用戶的信息)

package com.commer.app.UserService;

import com.commer.app.entity.User;

public interface UserService {    

  //根據用戶id獲取用戶信息  

  User selectByPrimaryKey(Integer id);

}

hlq-commer-service 這個項目作為dubbo的一個服務提供者,最重要的就是暴露服務,數據庫的連接,mybatis的映射都在這

項目目錄:

App類作為dubbo的一個服務啟動類(發布服務,連接數據庫,指定映射文件),同時加載spring boot的配置文件,

主要代碼:

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.ComponentScan.Filter;

import org.springframework.context.annotation.ImportResource;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.dubbo.config.annotation.Service;

@SpringBootApplication

@ComponentScan(basePackages = { "com.commer.app.service.impl" }, includeFilters = {   @Filter(classes = { Service.class}) })

@ImportResource(locations = { "classpath:dubboprovider.xml" })

@MapperScan("com.commer.app.mapper")

public class App {

   @Bean(initMethod = "init", destroyMethod = "close")

   @ConfigurationProperties(prefix = "spring.datasource")  

  public DataSource dataSource() {  

     return new DruidDataSource();

   }

   @Bean  

  public SqlSessionFactory sqlSessionFactoryBean() throws Exception {  

     PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();   

    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();   

    sqlSessionFactoryBean.setDataSource(dataSource());   

    sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:/mybatis-mapping/*Mapper.xml"));   

    return sqlSessionFactoryBean.getObject();

   }

 public static void main(String[] args) throws IOException {   

  SpringApplication.run(App.class, args);   

  System.out.println("服務運行中...");   

  System.in.read();

 }

 

userMapper類(dao 類)

@Component

public interface UserMapper {    

 int deleteByPrimaryKey(Long id);

    int insert(User record);

    int insertSelective(User record);

    //根據用戶id獲取用戶信息   

   User selectByPrimaryKey(Integer id);

}

 

這里需要注意的地方就是 @Component這個注解(表示該類給掃描組件),如果不加這個注解的話,UserServiceImpl @Resource獲取UserMapper Bean會是個空(這個是spring自己的一個掃描組件配置,可以自己去看下這方面的知識);

UserMapper.xml這里就不說了,不懂的同學可以去看看 mybatis的教程了解

 

然后先看 UserServiceImpl代碼:

主要注意紅色標注的地方,之前dubbo提供者發布的時候一直失敗,就是因為導入的是一個 spring自帶的一個 @service注解,一直沒注意這個地方,導致項目一直發布不了,因為作為一個dubbo服務提供者,啟動時需要知道發布的服務是在哪,不使用dubbo提供的@service注解。就會出現上面的問題。

application.properties(主要配置數據庫連接)

然后重點是 dubbo服務提供者的配置文件

 

 注冊中心使用zookeeper,掃描所有的包並且發布。

 

最后就看 dubbo的一個服務消費者了,這里個人整合了 html 和jsp 

首先看 啟動類 webStart:

紅色地方標注的是,啟動的時候測試userservice有沒有發布過來,成功的話會打印一個用戶姓名,下面注釋的部分用來配置攔截器和出現錯誤頁面的一個處理方法。

然后貼上控制器類和幾個測試的方法:

 這里需要注意紅色標注的地方,之前一直使用的是下面的一個注解,然后注入 UserService bean的時候一直null,很分解,看過別人的dubbo案例,好多都是使用了下面那種注解,問題不曉得在哪(個人還是個菜雞)

 

下面MvcConfiguration類主要讓spring boot整合jsp,官方貌似提示  spring boot是不支持jsp的需要自己去整合。

 然后后面重要的就是 dubbo服務消費者的配置文件了

配置文件還有什么不懂的同學,可以自己去dubbo官網看下官方文檔。

首先啟動App類,發布服務,再啟動zookeeper服務器,將dubbo服務提供者注冊到zookeeper集群中管理,然后再啟動webStart類整個過程就搭建完了。

pom文件需要下載jar包太慢的,可以講maven下載倉庫配置文件修改指向其阿里私有雲倉庫,個人用的也是阿里雲倉庫。

需要原碼的朋友可以留言給我 ,因為現在在整git  還沒將項目托管上去,整好了就給出來,希望大家一起加油!

今天上午整好了,附上githu地址:https://github.com/huliqin900/hlq-commer

繼續擼碼中  整合redis

 


免責聲明!

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



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