Skip to content

wyx-hub/Spring-Boot

Repository files navigation

基于Spring-boot的微架构,旨在集成所有可能用到的技术;做到轻|小|快 项目版本说明: 0-wdw-jar : 基于jar直接运行 1-wdw-war : 基于war部署方式,方便web应用加载静态文件; 2-wdw-tomcat : 集成Tomcat的各种配置 3-wdw-log4j2 : 集成log4j2的各种配置 4-wdw-h2 : 集成h2database的各种配置 4.1-wdw-mysql : 集成mysql的各种配置 4.2-wdw-oracle : 集成oracle的各种配置 5-wdw-mybatis : 集成mybatis 6-boot-mq

*注 : 1. n -> (n+1)表示在n代码的基础上集成(n+1)新技术;目的在于方便项目代码选取;比如我只想测试一个rest服务,取 0-wdw-jar代码即可完成; 2. 3。n-wdw-mybatis : 表示myBatis集成的各种小技术;比如mybatis分页,批处理等;


直接借鉴了Spring-Boot官网demo; URL :https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-actuator-log4j2

---- h2 ----- 添加jpa,h2的依赖

spring.h2.console.enabled=true h2的控制台设置 spring.h2.console.path=/h2 h2控制台context-path/ *******注意 : /h2是挂在Tomcat context-path目录下的;http://localhost:9091/wdw/h2/

H2-console登录界面可以设置驱动,用户名等;一旦设置后,boot想要连接就要有如下配置,用来做为h2的数据连接; spring.jpa.show-sql = true : 是否显示sql语句 spring.datasource.url = jdbc:h2:file:D:\test\db\testdb :绝对路径,数据本地化 ; ; h2-console登录的设置存在路径 #spring.datasource.url = jdbc:h2:file:~/.h2/testdb :相对路径,数据本地化 #spring.datasource.username = sa #spring.datasource.password = sa #spring.datasource.driverClassName = org.h2.Driver

配置加载表结构sql;

spring.datasource.schema=classpath:h2/schema1.sql,classpath:h2/schema2.sql spring.datasource.platform=classpath:h2/data.sql 参考源码: String schema = this.properties.getSchema(); if (schema == null) { String platform = this.properties.getPlatform(); schema = "classpath*:schema-" + platform + ".sql,"; schema = schema + "classpath*:schema.sql,"; schema = schema + "classpath*:data-" + platform + ".sql,"; schema = schema + "classpath*:data.sql"; }

		List resources = getSchemaResources(schema);

Spring Boot 很多都是基于自动配置的;如上述源码,所以默认加载。通过配置文件可以修改默认配置;

自动集成JDBCTemplate,所以可以直接用 @Autowired private JdbcTemplate jdbcTemplate;

------- mysql -------------------------- 接mysql简单,如上述接h2一样,改变下DataSource配置就可以了;

现在要接入俩个数据源;做到自适应;主要知识点

  1. 自定义annotation:DataSource的key传递 2。 aop annotation: 针对添加某annotation的方法做切面;

  2. Spring boot针对AbstractRoutingDataSource 的实现 AbstractRoutingDataSource : 实现数据源切换的类,主要是每次sessionConnection之前先行切换; defaultTargetDataSource : 默认数据源 targetDataSources : Map<key,DS>存放多种数据源的集合;每次connection前,切换key,获取集合对应的ds然后连接; determineCurrentLookupKey(); 重写获取当前数据源的key,实现切换; 4.aspectj 针对annotation的切面定义的时候; @Before("@annotation(tds))") // 切面方法第一个参数可以是JoinPoint的子类。会直接注入;第二个方法是annotation的定义;值会通过参数名直接传过来 public void changeDataSource( JoinPoint joinPoint, TargetDataSource tds) throws Throwable {

    @After("@annotation(com.wangmeng.wdw.datasource.TargetDataSource)") 无需annotation的时候;只针对加TargetDataSource的方法切 public void removeDataSource( JoinPoint joinPoint) {

------ oracle ------------- 多种数据源方式,集成oracle

-----------------------------------------MyBatis-------------------------------------- 俩种方式: 1. 基于Spring-Boot自带的mybatis-spring-boot-starter包 配置简单的application。properties即可使用 简单但是局限,不利于mybatis自身的功能扩展

2. 基于mybatis-Spring包,集成的方式;
	项目使用Spring Boot 1.3.0.RELEASE + Mybatis3.3.0
	项目集成了Mybatis分页插件和通用Mapper插件

选2,先复习下mybatis-Spring怎么配置: -- 配置sqlSessionFactory; *.xml文件; mybatis-config

-- Dao
<bean id="mcsStlOrderDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.bill99.mcs.process.order.dao.IStlOrderDao"/>
    <property name="sqlSessionFactory" ref="mcsQueryFactory"/>
</bean>

集成mybatis:
	1. 配置数据源 :org.mybatis.spring.SqlSessionFactoryBean
 		参见类MyBatisSqlSessionFactory;配置sqlsession的
 	2. 配置dao
		a. 一般配置 : MapperFactoryBean -> SqlSessionDaoSupport->sqlsessionfactory
				指定接口名,数据源即可
		b. 通用 : MapperScannerConfigurer;Spring提供的通用配置扫描类
			主要配置: 
				basePackage :mapper接口的扫描路径
				sqlSqssionFactory : 数据源
			原理就是:自动扫描basePackage的接口,生成一个默认MapperFactoryBean的beanName为接口的默认类名;并把sqlSqssionFactory注入到MapperFactoryBean中;返回MapperFactoryBean
 		c. 使用通用的mapper做配置;
 				所谓通用就是一个表的entity的CURD都是固定写法里不用每次都配置对应;主要mapperHelper.java
 				重新MapperScannerConfigurer方法,为每个自动注入的MapperFactoryBean注入mapperHelper属性;
 				definition.setBeanClass(MapperFactoryBean.class);
				definition.getPropertyValues().add("mapperHelper",this.mapperHelper);
由于是直接集成myBatis,没有使用Springboot的集成方式,所以没有配置文件的key定义
自定义如下KEY:
		mybatis.scanner.base.package=com.wangmeng.wdw.dao.user
		mybatis.config.location.class.path=classpath:
		mybatis.mapper.locations.class.path=classpath:

完整配置 mybatis.scanner.base.package=com.wangmeng.wdw.dao.user mybatis.sql.session.factory.bean.name=myBatisSqlSessionFactory mybatis.config.location.class.path=classpath:mybatis/mybatis-common-config.xml mybatis.mapper.locations.class.path=classpath:/mapper/.xml

---- 6-boot-mq -------------- 官方支持太差了,。。。需要自己编译Jzmq.dll提供Java调用;所以只能放弃;有时间在搞吧 换一个纯MQ,rabbitMq

About

基于SpringBoot的微服务搭建全过程

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published