数据服务_SpringBoot读取Hbase数据

SpringBoot启动流程

主要分为三个部分,
  第一部分 进行SpringApplication的初始化模块,配置一些基本的环境变量、资源、构造器、监听器,
  第二部分 实现了应用具体的启动方案,包括启动流程的监听模块、加载配置环境模块、及核心的创建上下文环境模块,
  第三部分 是自动化配置模块,该模块作为springboot自动配置核心
主要创建了配置环境(environment)、事件监听(listeners)、应用上下文(applicationContext),并基于以上条件,
   在容器中开始实例化需要的Bean,至此,通过SpringBoot启动的程序已经构造完成

Spring中层级

model 层即数据库实体层,也被称为 entity 层 /pojo层
     一般数据库一张表对应一个实体类,类属性同表字段一一对应
	   满足dao层的数据封装需求,所创建的实体类;
dao 层即数据持久层,也被称为mapper层。
    dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。
service 层调用dao层接口,
     接收dao层返回的数据,完成项目的基本功能设计
	   service:业务层(接口),多态的体现;
	    service.impl :业务层的实现类。
controller 层负责前后端交互,
      接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端

Spring 注解

 spring可以配置各个层的bean组件(bean)并且维护各个bean之间的关系
 Ioc(控制反转)和AOP(面向切面编程)为内核 

@Controller 只是定义了一个控制器类,而使用 @RequestMapping 注解的方法才是处理请求的处理器
@Service()  此注注解属于业务逻辑层

@Mapper和@Repository是常用的两个注解,两者都是用在dao上
注解本质上就是一个类,开发中我们可以使用注解 取代 xml配置文件。

@component是spring中的一个注解,它的作用就是实现bean的注入
web开发,提供3个@Component注解衍生注解(功能一样)取代
 @Repository(“名称”):dao层
 @Service(“名称”):service层
 @Controller(“名称”):web层
 @Autowired:自动根据类型注入
 @Qualifier(“名称”):指定自动注入的id名称

spring保证如果A依赖B(如beanA中有@Autowired B的变量),那么B将先于A被加载
  可以在bean A上使用@DependsOn注解,告诉容器bean B应该先被初始化
  首先要了解depends-on或@DependsOn作用,是用来表示一个bean A的实例化依赖另一个bean B的实例化, 
  但是A并不需要持有一个B的对象,如果需要的话就不用depends-on,直接用依赖注入就可以了或者ref标签。
  @DependsOn用法
  1:直接或者间接标注在带有@Component注解的类上面;
  2:直接或者间接标注在带有@Bean 注解的方法上面;
  spring容器载入bean顺序是不确定的,spring框架没有约定特定顺序逻辑规范,
   可以在bean A上使用@DependsOn注解,告诉容器bean B应该先被初始化

 
 要手动获取spring中的bean对象,这时就需要通过 ApplicationContext 
      直接注入(Autowired)
 	 构造器方法注入
 	 手动构建类实现接口 @Component
        public class SpringContextHolder implements ApplicationContextAware 
      当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。
      换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。

Hbase

1.NoSuchColumnFamilyException
  maven管理的依赖,直接修改maven依赖中hbase的版本就可以了
 半是由于Hbase client的版本与集群中的Hbase版本不一至造成

2.
o.s.web.servlet.DispatcherServlet      Completed initialization in 6 ms
org.apache.hadoop.hbase.security.AccessDeniedException: org.apache.hadoop.hbase.security.AccessDeniedException:
  Insufficient permissions for user 'aa' (table=dmin:test_result, action=READ)
	  //设置当前window/linux下用户为HBase可访问用户
	   System.setProperty("HADOOP_USER_NAME", "bb");
	   System.setProperty("HADOOP_GROUP_NAME", "bb");

参考:

SpringBoot中注入ApplicationContext对象的三种方式 https://blog.csdn.net/Abysscarry/article/details/80490624
posted @ 2020-11-26 18:06  辰令  阅读(983)  评论(0编辑  收藏  举报