spring-boot+dubbo+spring-data-jpa搭建分布式中的坑(空指针,404等)
2018-01-23 18:29
543 查看
一、spring-boot支持jsp
1. 引入依赖支持jsp和jstl的依赖
<!--支持jstl--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!--支持jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
2.补全webapp目录结构
(1)手动创建webapp/WEB-INF目录结构(2)在application.properties中配置如下
#springmvc视图解析 spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp #关闭thymeleaf缓存 spring.thymeleaf.cache=false #关闭thymeleaf模板 spring.thymeleaf.enabled=false
二、spring-boot的坑
(1)spring-boot会默认加载数据源相关信息>>单独拆分出来的web层不需要与数据库打交道,所以需要配置exclude属性
@SpringBootApplication(exclude ={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
(2)spring-boot会默认会扫描main函数所在包及子包的注解,Controller,Service等
>>a. 需要扫描的包放在入口程序所在包及子报下
>>b. 或者手动指定
(3)请求能正常进入Controller,但是视图返回 404
>> 使用spring-boot的插件运行即可(不要使用main函数运行程序)
三、注解配置dubbo,解决注入的service空指针问题(数据源等配置不再赘述)
(1)引入依赖<!--dubbo--> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>RELEASE</version> </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>
(2)注解
>>服务 ,使用dubbo包的 @Service
import com.alibaba.dubbo.config.annotation.Service; @Service public class ItemServiceImpl implements ItemService {
## Dubbo 服务提供者配置 spring.dubbo.application.name=tt-taotao-service spring.dubbo.registry.address=zookeeper://192.168.25.128:2181 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 spring.dubbo.scan=com.tt.manage.dubbo.impl spring.dubbo.application.registries.timeout=600000
>>调用,使用@Reference
@Controller public class ItemController { @Reference private ItemService itemService;
#Dubbo服务消费者配置 spring.dubbo.application.name=tt-manage-web spring.dubbo.registry.address=zookeeper://192.168.25.128:2181 spring.dubbo.scan=com.tt.manage.dubbo
(3)@Reference,spring不认识,然后dubbo也无法读取,导致无法注入,出现空指针。
>> 解决:从包结构上保证Controller所在包(服务调用者所在的包)是 服务接口所在包的子包
服务接口所在包:
web层Controller所在包:
>> 这样,dubbo先读取注解,然后spring扫描注解,就可以正常注入了
四、未解决问题
@Transaction注解生成的代理类中,dubbo无法读取@Reference注解,还是会出现空指针相关文章推荐
- 笔记:Spring boot+Thymeleaf+spring-data-jpa简单项目搭建
- 基于javaConfig的springDataJpa+dubbo+springMvc搭建(一)
- 基于javaConfig的springDataJpa+dubbo+springMvc搭建(二)
- maven开发springboot+jpa(Spring-data)
- Spring Boot Data JPA support Emoji
- SpringBoot Data JPA
- Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
- Spring Boot(7)— Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
- springboot整合spring data jpa
- 构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目(一)
- 在Spring Boot中使用Spring-data-jpa实现分页查询
- Spring Boot 与 Kotlin使用Spring-data-jpa简化数据访问层
- springboot 学习笔记【3】Spring Boot中使用Spring-data-jpa
- 企业分布式微服务云SpringCloud SpringBoot mybatis (八)Spring Boot中使用Spring-data-jpa让数据访问更简单
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- springboot集成spring-data-jpa
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程
- Spring boot data JPA 自定义JPQL语句,以及PagingAndSortingRepository接口实现分页查询
- SpringBoot项目 使用Sprin Data Jpa 实现数据库的 增 ,删, 改, 查操作
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程