`
天空晴朗
  • 浏览: 26868 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(六) 构建dubbo分布式平台-maven构建config配置项目

阅读更多

上一篇我们介绍《构建dubbo分布式平台-maven构建ant-parent项目》,框架使用maven进行构建,根据我们的规划,要将子项目全部构建出来,今天重点讲解的是ant-config配置文件项目的构建过程。

 

导语: 将ant-config项目独立出来的目的是将所有的配置文件进行统一项目管理,其中包括:spring相关文件配置、mybatis相关文件配置、数据源相关文件配置、基础环境文件配置(短信、消息、oss存储、第三方登陆、邮件等)、redis或者ehcache缓存相关配置、log4j日志文件相关配置、统一error异常配置、spring-shiro权限的相关配置、spring和redis缓存集成相关配置等。

 

1. 创建ant-config子项目,继承ant-parent项目,eclipse的创建过程我这边省略了。pom.xml文件配置如下:

 

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.sml.sz</groupId>
		<artifactId>ant-project</artifactId>
		<version>1.0.0</version>
	</parent>
	<artifactId>ant-config</artifactId>
	<name>ant-config</name>
	<url>http://maven.apache.org</url>
	<packaging>jar</packaging>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<build>
		<!-- maven 打包后的包名 -->
		<finalName>ant-config</finalName>
		<resources>
			<!-- 指定 src/main/resources下所有文件及文件夹为资源文件 -->
			<resource>
				<directory>src/main/resources</directory>
				<targetPath>${project.build.directory}/classes</targetPath>
				<includes>
					<include>**/*</include>
				</includes>
				<filtering>true</filtering>
			</resource>
			<!-- 根据env部署环境值,把对应环境的配置文件拷贝到classes目录 -->
			<resource>
				<directory>deployEnv/${env}</directory>
				<targetPath>${project.build.directory}/classes</targetPath>
				<filtering>true</filtering>
			</resource>
		</resources>
	</build>
</project>

 

2. 创建log4j.properties文件,配置如下:

# Output pattern : date [thread] priority category - message   FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 
log4j.rootLogger=WARN, Console, RollingFile

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%c{5}] - %m%n

#RollingFile
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=/logs/ant/ant.log
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

#log4j.logger.java.sql=DEBUG

#Project defalult level
log4j.logger.com.sml.sz=DEBUG
log4j.logger.com.sml.sz.common.security.shiro=WARN
log4j.logger.com.sml.sz.JedisUtils=WARN

 

3. 创建ant.properties文件,内容如下:

#--------------Database sttings--------------
#mysql database setting
jdbc.type=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ant-dubbo?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

#pool settings
jdbc.pool.init=10
jdbc.pool.minIdle=30
jdbc.pool.maxActive=60

#--------------redis settings--------------
redis.keyPrefix=ant
redis.host=127.0.0.1
redis.port=6379

#-------------- System settings --------------
#\u4ea7\u54c1\u4fe1\u606f\u8bbe\u7f6e
logoName=ant
productName=ant \u5206\u5E03\u5F0F\u4F01\u4E1A\u67B6\u6784
copyrightYear=2017
version=V1.0.0

#\u662f\u5426\u5141\u8bb8\u591a\u8d26\u53f7\u540c\u65f6\u767b\u5f55
user.multiAccountLogin=true

#\u5206\u9875\u914d\u7f6e
page.pageSize=10

#-------------- Framework settings --------------
#\u4f1a\u8bdd\u8d85\u65f6\uff0c \u5355\u4f4d\uff1a\u6beb\u79d2\uff0c 20m=1200000ms, 30m=1800000ms, 60m=3600000ms
session.sessionTimeout=1800000
#\u4f1a\u8bdd\u6e05\u7406\u95f4\u9694\u65f6\u95f4\uff0c \u5355\u4f4d\uff1a\u6beb\u79d2\uff0c2m=120000ms\u3002
session.sessionTimeoutClean=120000

#\u89c6\u56fe\u6587\u4ef6\u5b58\u653e\u8def\u5f84
web.view.prefix=/WEB-INF/views/
web.view.suffix=.jsp
web.maxUploadSize=10485760

#\u9759\u6001\u6587\u4ef6\u540e\u7f00
web.staticFile=.css,.js,.png,.jpg,.gif,.jpeg,.bmp,.ico,.swf,.psd,.htc,.htm,.html,.crx,.xpi,.exe,.ipa,.apk

#--------------Email SMTP --------------
mail.host=smtp.163.com
mail.port=25
mail.username=test@163.com
mail.password=test
mail.smtp.auth=true
mail.smtp.timeout=30000
mail.default.from=test@163.com

#-------------- JMS --------------
mq.brokerURL=failover\:(tcp\://127.0.0.1\:61616)?randomize\=false&initialReconnectDelay\=1000&maxReconnectDelay\=30000
mq.userName=ant
mq.password=ant
mq.pool.maxConnections=20
#queueName
queueName.task=task_queue_1

 

4. 创建mybatis-config.xml配置文件,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

	<!-- 全局参数 -->
	<settings>
		<!-- 使全局的映射器启用或禁用缓存。 -->
		<setting name="cacheEnabled" value="true"/>
		
		<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
		<setting name="lazyLoadingEnabled" value="true"/>
		
		<!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
		<setting name="aggressiveLazyLoading" value="true"/>
		
		<!-- 是否允许单条sql 返回多个数据集 -->
		<setting name="multipleResultSetsEnabled" value="true"/>
		
		<!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
		<setting name="useColumnLabel" value="true"/>
		
		<!-- 允许JDBC 生成主键。  -->
		<setting name="useGeneratedKeys" value="false"/>
		
		<!-- 指定 MyBatis 如何自动映射  -->  
		<setting name="autoMappingBehavior" value="PARTIAL"/>
		
		<!-- 这是默认的执行类型  -->
		<setting name="defaultExecutorType" value="SIMPLE"/>
		
		<!-- 使用驼峰命名法转换字段。 -->
		<setting name="mapUnderscoreToCamelCase" value="true"/>
		
		<!-- 设置本地缓存范围 session:就会有数据的共享 -->
		<setting name="localCacheScope" value="SESSION"/>
		
		<!-- 设置但JDBC类型为空时,某些驱动程序 要指定值-->
		<setting name="jdbcTypeForNull" value="NULL"/>
		
	</settings>
	
	<!-- 类型别名 -->
	<!--分页  -->
	<typeAliases>
		<typeAlias alias="Page" type="com.sml.sz.common.persistence.Page" />
	</typeAliases>
	
	<!-- 插件配置 -->
	<plugins>
		<plugin interceptor="com.sml.sz.common.persistence.interceptor.PaginationInterceptor" />
    </plugins>
	
</configuration>

 5. 创建spring-context.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:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"
	default-lazy-init="true">

	<description>Spring Configuration</description>
	
	<!-- 加载配置属性文件 -->
	<context:property-placeholder ignore-unresolvable="true" location="classpath:ant.properties" />
	
	<!-- 加载应用属性实例-->
	<util:properties id="APP_PROP" location="classpath:ant.properties" local-override="true"/>
	
	<!-- 使用Annotation自动注册Bean,解决事物失效问题:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解。  -->
	<context:component-scan base-package="com.sml.sz"><!-- base-package 如果多个,用“,”分隔 -->
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
	
 	<!-- MyBatis begin -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.sml.sz"/>
        <property name="typeAliasesSuperType" value="com.sml.sz.common.persistence.BaseEntity"/>
        <property name="mapperLocations" value="classpath*:mappings/**/*.xml"/>
		<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
    </bean>
    
    <!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <property name="basePackage" value="com.sml.sz.*"/>
        <property name="annotationClass" value="com.sml.sz.common.persistence.annotation.MyBatisDao"/>
    </bean>
    
    <!-- 定义事务 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	<!-- 配置 Annotation 驱动,扫描@Transactional注解的类定义事务  -->
	<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
    <!-- MyBatis end -->
    
	<!-- 配置 JSR303 Bean Validator 定义 -->
	<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

	<!-- 缓存配置 -->
	<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
		<property name="configLocation" value="classpath:${ehcache.configFile}" />
	</bean>
    
	<!-- 数据源配置, 使用 BoneCP 数据库连接池 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 
	    <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
	    <property name="driverClassName" value="${jdbc.driver}" />
	    
		<!-- 基本属性 url、user、password -->
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		
		<!-- 配置初始化大小、最小、最大 -->
		<property name="initialSize" value="${jdbc.pool.init}" />
		<property name="minIdle" value="${jdbc.pool.minIdle}" /> 
		<property name="maxActive" value="${jdbc.pool.maxActive}" />
		
		<!-- 配置获取连接等待超时的时间 -->
		<property name="maxWait" value="60000" />
		
		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="60000" />
		
		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="300000" />
		
		<property name="validationQuery" value="${jdbc.testSql}" />
		<property name="testWhileIdle" value="true" />
		<property name="testOnBorrow" value="false" />
		<property name="testOnReturn" value="false" />
		
		<!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
		<property name="poolPreparedStatements" value="true" />
		<property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> -->
		
		<!-- 配置监控统计拦截的filters -->
	    <property name="filters" value="stat" /> 
	</bean>
</beans>

 6 创建spring-context-shiro.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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.0.xsd"
	default-lazy-init="true">

	<description>Shiro Configuration</description>

	<!-- 加载配置属性文件 -->
	<context:property-placeholder ignore-unresolvable="true" location="classpath:ant.properties" />
	
	<!-- Shiro权限过滤过滤器定义 -->
	<bean name="shiroFilterChainDefinitions" class="java.lang.String">
		<constructor-arg>
			<value>
				/static/** = anon
				/userfiles/** = anon
				${adminPath}/login = authc
				${adminPath}/logout = logout
				${adminPath}/** = user
				/act/rest/service/** = user
				/ReportServer/** = user
			</value>
		</constructor-arg>
	</bean>
	
	<!-- 安全认证过滤器 -->
	<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<property name="securityManager" ref="securityManager" />
		<property name="loginUrl" value="${adminPath}/login" />
		<property name="successUrl" value="${adminPath}?login" />
		<property name="filters">
            <map>
                <entry key="authc" value-ref="formAuthenticationFilter"/>
            </map>
        </property>
		<property name="filterChainDefinitions">
			<ref bean="shiroFilterChainDefinitions"/>
		</property>
	</bean>
	
	<!-- 定义Shiro安全管理配置 -->
	<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
		<property name="realm" ref="systemAuthorizingRealm" />
		<property name="sessionManager" ref="sessionManager" />
		<property name="cacheManager" ref="shiroCacheManager" />
	</bean>
	
	<!-- 自定义会话管理配置 -->
	<bean id="sessionManager" class="com.sml.sz.common.security.shiro.session.SessionManager"> 
		<property name="sessionDAO" ref="sessionDAO"/>
		
		<!-- 会话超时时间,单位:毫秒  -->
		<property name="globalSessionTimeout" value="${session.sessionTimeout}"/>
		
		<!-- 定时清理失效会话, 清理用户直接关闭浏览器造成的孤立会话   -->
		<property name="sessionValidationInterval" value="${session.sessionTimeoutClean}"/>
 		<property name="sessionValidationSchedulerEnabled" value="true"/>
 		
		<property name="sessionIdCookie" ref="sessionIdCookie"/>
		<property name="sessionIdCookieEnabled" value="true"/>
	</bean>

	<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
	    <constructor-arg name="name" value="ant.session.id"/>
	</bean>

	<!-- 自定义Session存储容器 -->
	<!-- <bean id="sessionDAO" class="com.sml.sz.common.security.shiro.session.JedisSessionDAO">
		<property name="sessionIdGenerator" ref="idGen" />
		<property name="sessionKeyPrefix" value="${redis.keyPrefix}_session_" />
	</bean> -->
	<bean id="sessionDAO" class="com.sml.sz.common.security.shiro.session.CacheSessionDAO">
		<property name="sessionIdGenerator" ref="idGen" />
		<property name="activeSessionsCacheName" value="activeSessionsCache" />
		<property name="cacheManager" ref="shiroCacheManager" />
	</bean>
	
	<!-- 定义授权缓存管理器 -->
	<bean id="shiroCacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
		<property name="cacheManager" ref="cacheManager"/>
	</bean>
	
	<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
	
	<!-- AOP式方法级权限检查  -->
	<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
		<property name="proxyTargetClass" value="true" />
	</bean>
	<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
    	<property name="securityManager" ref="securityManager"/>
	</bean>
	
</beans>

 7. 代码结构如下:

 

 
 欢迎大家跟我一起学习《构建dubbo分布式平台》,希望大家持续关注后面的文章!

 

  • 大小: 37.3 KB
5
0
分享到:
评论
2 楼 wenhai_zhang 2018-02-28  
没有写到spring-context-jedis.xml的内容。
1 楼 gaolu8855 2017-12-11  
请问,有源码的下载地址吗

相关推荐

    Maven构建的分布式demo

    Maven作为Java项目管理工具,为构建分布式应用程序提供了强大的支持。本篇将深入探讨如何利用Maven来构建一个简单的分布式系统。 首先,我们从最基础的Maven工程开始。Maven的项目对象模型(Project Object Model,...

    dubbo分布式项目实战 环境搭建文档.7z

    总结来说,搭建Dubbo分布式项目环境需要对Java环境、Maven、Zookeeper有基本的了解和配置经验,同时熟悉Dubbo的配置和使用。通过以上步骤,开发者可以成功地创建一个基础的Dubbo服务提供者和消费者环境,为后续的...

    分布式 ssm-dubbo配置文件

    分布式SSM-Dubbo配置文件详解 SSM-Dubbo是一个基于Java的开源框架组合,由Spring、SpringMVC和Dubbo三部分...通过理解并熟练配置这些文件,开发者可以更好地管理和优化SSM-Dubbo分布式系统,提高系统的性能和可靠性。

    Dubbo视频教程--高级篇--第24节--简易版支付系统介绍

    - **pay-common-parent**: 这是一个Maven父配置工程,作为其他项目配置的基础,能够统一管理项目的依赖版本和插件配置等。 - **pay-common**: 公共核心工程,包含了被其他服务工程共用的代码,例如通用工具类、常量...

    6-Maven构建分布式工程1

    综上所述,构建这样一个分布式工程涉及了Maven的项目管理、模块化设计、依赖注入(Spring)、持久层处理(MyBatis)、服务接口定义和服务实现、以及可能的微服务架构(Dubbo)。整个工程的组织结构清晰,有利于代码...

    incubator-dubbo-ops-master.zip

    此外,`pom.xml`文件定义了项目的依赖关系和构建配置,对于理解项目构建过程至关重要。 3. **核心组件** - `dubbo-registry`:负责服务注册与发现,是Dubbo服务治理的核心部分。 - `dubbo-monitor`:监控模块,...

    Spring整合dubbo服务调用(Maven项目)

    【Spring整合Dubbo服务调用(Maven项目)】 在现代企业级应用开发中,Spring框架以其强大的功能和灵活的扩展性被广泛应用,而Dubbo作为阿里巴巴开源的高性能服务框架,常用于实现微服务间的通信。本项目是关于如何在...

    dubbo-2.8.4.jar

    8. **配置(Config)**:Dubbo支持集中式的配置管理,可以通过配置中心动态地更新服务的配置。 9. **SPI(Service Provider Interface)**:Dubbo采用Java的SPI机制,允许用户自定义扩展点,增强了框架的可扩展性。...

    dubbo-dev-book.pdf

    Apache Dubbo 是一个高性能、轻量级的 Java RPC 框架,它提供了透明化的远程方法调用(RPC)功能,为开发大型分布式应用提供了快速的服务调用和负载均衡、服务治理的能力。本篇文档将详细探讨 Dubbo 的源码构建、...

    10 - 基于Maven-SpringBoot-Dubbo微服务实战

    Maven是Java开发中的一个项目管理和依赖管理工具,SpringBoot简化了Spring应用的初始搭建以及开发过程,而Dubbo则是阿里巴巴开源的高性能Java RPC框架,常用于构建分布式微服务系统。 首先,我们从`pom.xml`文件...

    J2EE分布式框架--技术介绍文档.docx

    J2EE分布式框架是构建大型企业级应用的重要技术体系,其中Jeesz是一个专为互联网企业架构设计的高效开发平台。它集成了多种组件和服务,旨在提升开发效率、易用性和扩展性。以下是对Jeesz核心技术和特性的详细解析:...

    dubbo-user-book

    接着,文档详细描述了Dubbo的Reference Config缓存、分布式事务、API参考手册、schema配置参考手册、以及dubbo:servicedubbo:referencedubbo:protocoldubbo:registrydubbo:monitor的配置细节。此外,还包含了协议...

    dubbo-master.zip包,解压可用

    - Gradle:另一种构建工具,可以与Maven互换使用,提供更灵活的构建配置。 4. **文档**: - `docs`目录下包含了项目的用户手册、开发者指南以及API文档,是了解和使用Dubbo的重要资源。 5. **测试**: - `tests...

    dubbo_admin2.5.4

    总结来说,"dubbo_admin2.5.4"是一个针对JDK 1.8优化的Dubbo服务管理工具,提供了丰富的功能来管理和监控Dubbo分布式环境。通过其Web界面,开发者可以便捷地进行服务治理,提升开发效率,并确保系统的健康运行。...

    使用Maven构建Dubbo服务的可执行jar包_源码.zip

    在本项目中,我们主要探讨如何使用Maven来构建基于Dubbo的服务化工程,并将其打包成可执行的jar包。这个过程涉及到多个关键步骤和技术点,包括Dubbo服务化的概念、Dubbo服务化改造的策略以及Maven工程的管理。 首先...

    dubbo-demo项目源码

    8. **构建脚本**:如`pom.xml`(如果使用Maven),用于项目的构建、依赖管理和打包。 通过这个dubbo-demo项目源码,你可以学习到如何定义服务接口、实现服务提供者、创建服务消费者,以及如何配置注册中心和监控...

    _dubbo-demo1-master_java_dubbo_

    1. `pom.xml`:Maven项目的配置文件,定义了项目依赖,包括Dubbo和Spring等核心库。 2. `src/main/java`:源代码目录,其中会有服务提供者和服务消费者的实现。 3. `src/main/resources`:资源文件夹,可能包含配置...

    maven+spring mvc+hibernate+dubbo的demo

    这是一个基于Maven、Spring MVC、Hibernate和Dubbo的示例项目,旨在展示这些技术如何协同工作以构建一个分布式服务架构的应用。以下是对每个组件及其在项目中的作用的详细解释: **Maven**: Maven是一个项目管理和...

    Dubbo 项目结构解析1

    7. **dubbo-config**:配置模块,提供了基于XML、API、Annotation等多种方式的配置方式,使得用户可以方便地管理和配置Dubbo服务。 8. **dubbo-container**:容器模块,主要是为了支持Spring容器,让Dubbo服务可以...

    dubbo-master.zip

    3. `pom.xml`: Maven项目配置文件,定义了项目的依赖、构建规则等信息。 三、核心组件介绍 1. **服务提供者(Provider)**:提供服务的模块,定义服务接口并实现其实例,通过Dubbo暴露服务。 2. **服务消费者...

Global site tag (gtag.js) - Google Analytics