476
技術社區[雲棲]
SpringBoot開發案例之整合Dubbo提供者(一)
既然是開發案例,顯然不會扯那麼多老婆舌,有不清楚這兩個東東的請自行百度。
開發環境
JDK1.7、Maven、Eclipse、SpringBoot1.5.1、Dubbo2.8.4
項目結構
相關配置
pom.xml:
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itstyle.dubbo</groupId>
<artifactId>spring-boot-dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springBoot_dubbo_provider</name>
<url>https://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
</properties>
<!-- spring-boot-starter-parent包含了大量配置好的依賴管理,在自己項目添加這些依賴的時候不需要寫<version>版本號 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
<relativePath/>
</parent>
<!-- 配置依賴 -->
<dependencies>
<!-- springboot相關 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Dubbo相關 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<!-- 這裏使用最新的2.8.4版本,中央倉庫不存在,請自行打入本地倉庫 -->
<version>2.8.4</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- zookeeper 注冊中心 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- zookeeper 第三方操作工具類 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.6</version>
</dependency>
<!-- javassist 字節碼類庫 -->
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 打包項目 mvn clean package -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<!-- mvn spring-boot:run 熱部署啟動 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
User.java 一定要實現序列化接口
public class User implements Serializable {
private static final long serialVersionUID = -1L;
private String username;
private Integer age;
public User(String username, Integer age) {
this.username = username;
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
IUserService.java 接口
public interface IUserService {
void saveUser(User user);
}
UserServiceImpl.java 實現
@Service("userService")
public class UserServiceImpl implements IUserService {
@Override
public void saveUser(User user) {
System.out.println("保存用戶:"+user.getUsername());
}
}
dubbo.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="https://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
https://code.alibabatech.com/schema/dubbo https://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 提供方應用信息 -->
<dubbo:application name="springBoot_dubbo_provider" />
<!-- 注冊中心服務地址 -->
<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" check="false" />
<!-- 用dubbo協議-->
<dubbo:protocol name="dubbo" port="-1" dispather="all" check="false" />
<dubbo:provider timeout="10000" threads="10" threadpool="fixed" loadbalance="roundrobin"/>
<!-- 聲明需要暴露的服務接口 -->
<dubbo:service interface="com.itstyle.dubbo.service.IUserService" ref="userService"/>
</beans>
application.properties
# 項目contextPath,一般在正式發布版本中,我們不配置
server.context-path=/provider
# 錯誤頁,指定發生錯誤時,跳轉的URL。請查看BasicErrorController源碼便知
server.error.path=/error
# 服務端口
server.port=8080
# session最大超時時間(分鍾),默認為30
server.session-timeout=60
# 該服務綁定IP地址,啟動服務器時如本機不是該IP地址則拋出異常啟動失敗,隻有特殊需求的情況下才配置
# server.address=192.168.16.11
# tomcat最大線程數,默認為200
server.tomcat.max-threads=800
# tomcat的URI編碼
server.tomcat.uri-encoding=UTF-8
#ZooKeeper
dubbo.registry.address=192.168.1.180:2181
logging.level.root=INFO
SpringbootDubboApplication.java 測試類
@SpringBootApplication
@ComponentScan(basePackages={"com.itstyle.dubbo"})
@ImportResource({"classpath:dubbo.xml"})
public class SpringbootDubboApplication implements CommandLineRunner {
@Autowired
private IUserService userService;
public static void main(String[] args) {
SpringApplication.run(SpringbootDubboApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
User user = new User("張三",19);
userService.saveUser(user);
}
}
此時,我們運行SpringbootDubboApplication類,如下結果說明成功:
然後使用ZooInspector查看zookeeper信息,會發現注冊了一個提供者:
作者: 小柒
出處: https://blog.52itstyle.com
本文版權歸作者和雲棲社區所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出, 如有問題, 可郵件(345849402@qq.com)谘詢。
最後更新:2017-07-18 20:35:45