數據服務_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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM