部落格

  • spring 是如何注入對象的和bean 創建過程分析

    文章目錄:

    1. 【本文】spring 是如何注入對象的

    首先需要知道一個大致實現

    • 這個注入過程肯定是在 BeanPostProcessor 中實現的

    • spring 是在 beanFactory.getBean 進行 bean 實例化的,即懶加載

    • 根據第二條,也就是說在 getBean 的時候才會去調用所有 BeanPostProcessor

    • 第二篇文章說到,BeanFactory 的 refresh 過程只是註冊 BeanPostProcessor,真正執行在 getBean 方法中

    • MergedBeanDefinitionPostProcessor 也是一種 BeanPostProcessor 它重新弄了個一個生命周期函數,替代了 BeanPostProcessor 默認的生命周期函數,這麼看吧,我貼一小段源碼

      for (BeanPostProcessor bp : getBeanPostProcessors()) {
          if (bp instanceof MergedBeanDefinitionPostProcessor) {
              MergedBeanDefinitionPostProcessor bdp = (MergedBeanDefinitionPostProcessor) bp;
              bdp.postProcessMergedBeanDefinition(mbd, beanType, beanName);
          }
      }

      它允許你在非 BeanFactoryProcess 中去修改 Bean 定義

    • InstantiationAwareBeanPostProcessor 也是一種 BeanPostProcessor 它也重新定義了一個生命周期函數,它允許把屬性值注入到屬性對象中

    @Autowired 加載定義的過程

    我們先不看 bean 的創建過程,就看 MergedBeanDefinitionPostProcessor 的實現子類,這裏看名字猜測 AutowiredAnnotationBeanPostProcessor 應該就是干這件事的,所以我們接下來可以直接看 AutowiredAnnotationBeanPostProcessor 的 postProcessMergedBeanDefinition 方法的代碼。

    順着方法的調用,可以知道在 buildAutowiringMetadata 是真正查找這些註解的地方,最後 checkConfigMembers 將 Member 註冊進了 bean 定義,具體如何查找的讀者自行查看源碼。

    這裏只是將 Member 註冊進了 bean 定義,真正實例化在填充 Bean 的過程中,下面說到 bean 的創建過程可以知道是何時注入的。

    Bean 的創建過程

    前面說到 spring 是在 getBean 的過程中進行 Bean 創建的,創建 bean 分為幾個步驟

    1. 獲取 bean 定義
    2. new Bean()
    3. 執行生命周期函數 (前)
    4. 創建依賴項
    5. 填充 bean
    6. 執行生命周期函數(后)

    入口為 BeanFactory.getBean ,BeanFactory 的實現類為 DefaultListableBeanFactory 這些你可以在 BeanFactory 的 refresh 過程中找到

    根據源碼,如果 bean 還不存在時,就會執行 bean 的創建流程

    獲取 bean 定義在這段源碼中

    final RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName);

    緊跟着,根據 Bean 定義搜索其依賴項,並創建 bean ,可以看出是遞歸創建 bean

    String[] dependsOn = mbd.getDependsOn();
    for (String dep : dependsOn) {
        getBean(dep);
    }

    然後就創建 bean 了

    if (mbd.isSingleton()) {
        createBean(beanName, mbd, args);
    }
    
    // 真正的執行在 doCreateBean 過程中
    Object beanInstance = doCreateBean(beanName, mbdToUse, args);

    創建 bean 第一步 new Bean

    if (instanceWrapper == null) {
        instanceWrapper = createBeanInstance(beanName, mbd, args);
    }

    創建 bean 第二步,執行所有的 processor ,包含 MergedBeanDefinitionPostProcessor ,所以在這一步註冊注入選項

    applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName);

    創建 bean 第三步,填充 bean ,這裏做的 @Autowired 注入

    populateBean(beanName, mbd, instanceWrapper);

    最終的處理過程在 AutowiredAnnotationBeanPostProcessor 的 postProcessPropertyValues 函數中

    metadata.inject(bean, beanName, pvs);

    因為在前面已經獲取過依賴項,並且把其丟進了容器,所以這裡是直接用反射寫進去就可以了

    創建 bean 第四步,初始化 bean ,這裡有一個方法注入,方法注入原來發生在初始化 bean 過程中,還有就是生命周期函數執行了,包含 BeanPostProcessor 的前置後置生命周期,初始化方法等

    小說明 :AutowiredAnnotationBeanPostProcessor 即是 一個 MergedBeanDefinitionPostProcessor 也是一個 InstantiationAwareBeanPostProcessor

    一點小推廣

    創作不易,希望可以支持下我的開源軟件,及我的小工具,歡迎來 gitee 點星,fork ,提 bug 。

    Excel 通用導入導出,支持 Excel 公式
    博客地址:
    gitee:

    使用模板代碼 ,從數據庫生成代碼 ,及一些項目中經常可以用到的小工具
    博客地址:
    gitee:

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    ※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

    ※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

  • ES6學習筆記01 — 暫時性死區 ( temporal dead zone )

    參考文檔:   

           

           

    注:文中代碼僅作示意,複製運行時需要適當調整

      
    ES6 規定,如果代碼區塊中存在 let 和 const 命令聲明的變量,這個區塊對這些變量從一開始就形成了封閉作用域,直到聲明語句完成,這些變量才能被訪問(獲取或設置),否則會報錯ReferenceError。這在語法上稱為“暫時性死區”(英temporal dead zone,簡 TDZ),即代碼塊開始到變量聲明語句完成之間的區域。
      通過 var 聲明的變量擁有變量提升、沒有暫時性死區,作用於函數作用域:

      • 當進入變量的作用域(包圍它的函數),立即為它創建(綁定)存儲空間,立即被初始化並被賦值為 undefined   
      • 當執行到變量的聲明語句時,如果變量定義了值則會被賦值
        (function fn() {  //函數作用域開始
            console.log(temp)  //undefined
            //聲明
            var temp 
            console.log(temp)  //undefined
            //賦值
            temp = 123
            console.log(temp)  //123
        })()
        //在函數作用域外訪問
        console.log(temp)  //ReferenceError: temp is not defined

     

      通過 let 聲明的變量沒有變量提升、擁有暫時性死區,作用於塊級作用域:

      • 當進入變量的作用域(包圍它的語法塊),立即為它創建(綁定)存儲空間,不會立即初始化,也不會被賦值
      • 訪問(獲取或設置)該變量會拋出異常 ReferenceError
      • 當執行到變量的聲明語句時,如果變量定義了值則會被賦值,如果變量沒有定義值,則被賦值為undefined
            {  //函數作用域開始,TDZ開始
                console.log(temp)  //ReferenceError: temp is not defined
                //聲明
                let temp  
                console.log(temp)  //ReferenceError: Cannot access 'temp' before initialization
                //賦值
                temp = 345  //TDZ結束
                console.log(temp)  //345
                //塊級作用域結束
            }
            //在塊級作用域外訪問
            console.log(temp)  //ReferenceError: temp is not defined

     

      通過 const 聲明的常量,需要在定義的時候就賦值,並且之後不能改變,暫時性死區與 let 類似。

            {   //作用域開始,TDZ開始
                console.log(temp)  //ReferenceError: temp is not defined
                //聲明並賦值
                const temp = 789  //TDZ結束
                console.log(temp)  //789 
                //給常量賦值
                temp = 987  //TypeError: Assignment to constant variable
                //作用域結束
            }   
            //在作用域外訪問
            console.log(temp)  //ReferenceError: temp is not defined

     

      
    一句話總結:在塊級作用域中, let 和 const 聲明的變量、常量在聲明語句執行完成之前不能訪問(包括聲明語句本身)。
      另外,容易因為 暫時性死區 而出錯的細節代碼在此不展開舉例,參考文檔中有詳情舉例。  
      附:第一次寫學習筆記,寫隨筆花費的時間比學習相關內容的時間還要長,感覺有點本末倒置,不過以後回頭看應該會覺得有所值得吧!  

      

      

     

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    ※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享

    ※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

    ※評比南投搬家公司費用收費行情懶人包大公開

  • Spring 框架常用語法進行總結

     

    Spring 框架常用語法進行總結:

    spring框架的二大主要的功能就是IOC和AOP。

    IOC: 控制反轉(依賴注入)

    AOP: 面向切面編程

    學習spring最好的方法就是去看官網,裏面有詳細的說明及使用原則

    介紹spring 中的註解的使用,xml配置等目前在市面上面較少。

     

    首先介紹Java自帶的元註解 (元註解就是 能註解到註解上的註解,能用在其他註解上的註解 )

    Java5.0定義了4個標準的meta-annotation類型

    @Target :

    用於描述註解的範圍,即註解在哪用。它說明了Annotation所修飾的對象範圍:Annotation可被用於 packages、types(類、接口、枚舉、Annotation類型)、類型成員(方法、構造方法、成員變量、枚舉值)、方法參數和本地變量(如循環變量、catch參數)等。取值類型(ElementType)

       CONSTRUCTOR:用於描述構造器
      FIELD:用於描述域即類成員變量
      LOCAL_VARIABLE:用於描述局部變量
      METHOD:用於描述方法
      PACKAGE:用於描述包
      PARAMETER:用於描述參數
      TYPE:用於描述類、接口(包括註解類型) 或enum聲明
      TYPE_PARAMETER:1.8版本開始,描述類、接口或enum參數的聲明
      TYPE_USE:1.8版本開始,描述一種類、接口或enum的使用聲明
      
    eg :
    ​
    public @interface Log {
      ......
    }

     

    @Retention :

    用於描述註解的生命周期,表示需要在什麼級別保存該註解,即保留的時間長短。取值類型RetentionPolicy)

       SOURCE:在源文件中有效(即源文件保留)
      CLASS:在class文件中有效(即class保留)
      RUNTIME:在運行時有效(即運行時保留)  
    eg:
    ​
    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Log {
      ......
    }

     

    @Documented :

    用於描述其它類型的annotation應該被作為被標註的程序成員的公共API,因此可以被例如javadoc此類的工具文檔化。它是一個標記註解,沒有成員。

    eg :
    ​
    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Log {
      ......
    }
    @Inherited :

    用於表示某個被標註的類型是被繼承的。如果一個使用了@Inherited修飾的annotation類型被用於一個class,則這個annotation將被用於該class的子類。

     

     

    Spring 常用的註解

    在註解配置中常用的啟動方法就是:

    <!--在XML中啟用方法-->
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
    Person bean = (Person) applicationContext.getBean("person");
    System.out.println(bean);

    --------------------------------------------------------------------------
       <!--在註解中啟用方法-->
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
    Person bean = applicationContext.getBean(Person.class);
    System.out.println(bean);


    getBeanNamesForType:得到當前IOC容器加載進來的bean的名稱
    String[] namesForType = applicationContext.getBeanNamesForType(Person.class);
    for (String name : namesForType) {
    System.out.println(name);
    }
    @Component

    組件,沒有明確的角色

    @Service

    在業務邏輯層使用(service層)

    @Repository

    在數據訪問層使用(dao層)

    @Controller

    在展現層使用,控制器的聲明(Controller)

    @Bean

    注入ioc容器中,默認是以方法的名稱作為注入容器裏面的名稱,需注意@bean可以不在配置類裏面使用,不過經過@Bean註解使用過的方法所在的類也會被加載到ioc容器裏面。

    //配置類==配置文件

    @Configuration

    告訴Spring這是一個配置類,用在一個類的上面,配置類

    @Configuration == <bean id=”person” class=”com.opendev.entity.Person”></bean>

    @ComponentScan

    value:指定要掃描的包,用在配置類上面,告訴程序在spring中的掃包範圍

    @ComponentScans

    掃描多個包還有提供掃包的自定義掃包規則

     

    package com.atguigu.config;
    ​
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.FilterType;
    import org.springframework.context.annotation.ComponentScan.Filter;
    import org.springframework.context.annotation.ComponentScans;
    ​
    import com.atguigu.bean.Person;
    ​
    //配置類==配置文件
    @Configuration  //告訴Spring這是一個配置類
    ​
    @ComponentScans(
    value = {
    @ComponentScan(value="com.atguigu",includeFilters = {
    /*@Filter(type=FilterType.ANNOTATION,classes={Controller.class}),
    @Filter(type=FilterType.ASSIGNABLE_TYPE,classes={BookService.class}),*/
    @Filter(type=FilterType.CUSTOM,classes={MyTypeFilter.class})
    },useDefaultFilters = false)
    }
    )
    //@ComponentScan value:指定要掃描的包
    //excludeFilters = Filter[] :指定掃描的時候按照什麼規則排除那些組件
    //includeFilters = Filter[] :指定掃描的時候只需要包含哪些組件
    //FilterType.ANNOTATION:按照註解
    //FilterType.ASSIGNABLE_TYPE:按照給定的類型;
    //FilterType.ASPECTJ:使用ASPECTJ表達式
    //FilterType.REGEX:使用正則指定
    //FilterType.CUSTOM:使用自定義規則
    public class MainConfig {

    //給容器中註冊一個Bean;類型為返回值的類型,id默認是用方法名作為id
    @Bean("person")//聲明了注入ioc容器裏面的對象為person,默認都是以方法名作為id
    public Person person01(){
    return new Person("lisi", 20);
    }
    }
    ​

     

    //類中組件統一設置。滿足當前條件,這個類中配置的所有bean註冊才能生效;

    @Conditional

    裏面需要寫上相應接口的實現類

    @Import

    導入組件,id默認是組件的全類名

    spring中bean的作用域

    默認是單實例的

    //默認是單實例的
    /**
    * ConfigurableBeanFactory#SCOPE_PROTOTYPE    
    * @see ConfigurableBeanFactory#SCOPE_SINGLETON  
    * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST request
    * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION sesssion
    * @return\
    * @Scope:調整作用域
    * prototype:多實例的:ioc容器啟動並不會去調用方法創建對象放在容器中。
    * 每次獲取的時候才會調用方法創建對象;
    * singleton:單實例的(默認值):ioc容器啟動會調用方法創建對象放到ioc容器中。
    * 以後每次獲取就是直接從容器(map.get())中拿,
    * request:同一次請求創建一個實例
    * session:同一個session創建一個實例
    *
    * 懶加載:
    * 單實例bean:默認在容器啟動的時候創建對象;
    * 懶加載:容器啟動不創建對象。第一次使用(獲取)Bean創建對象,並初始化;
    *
    */
    //@Scope("prototype")
    @Lazy
    @Bean("person")
    public Person person(){
    System.out.println("給容器中添加Person....");
    return new Person("張三", 25);
    }
    spring中bean 的生命周期
    /**
    * bean的生命周期:
    * bean創建---初始化----銷毀的過程
    * 容器管理bean的生命周期;
    * 我們可以自定義初始化和銷毀方法;容器在bean進行到當前生命周期的時候來調用我們自定義的初始化和銷毀方法
    *
    * 構造(對象創建)
    * 單實例:在容器啟動的時候創建對象
    * 多實例:在每次獲取的時候創建對象\
    *
    * BeanPostProcessor.postProcessBeforeInitialization
    * 初始化:
    * 對象創建完成,並賦值好,調用初始化方法。。。
    * BeanPostProcessor.postProcessAfterInitialization
    * 銷毀:
    * 單實例:容器關閉的時候
    * 多實例:容器不會管理這個bean;容器不會調用銷毀方法;
    *
    *
    * 遍歷得到容器中所有的BeanPostProcessor;挨個執行beforeInitialization,
    * 一但返回null,跳出for循環,不會執行後面的BeanPostProcessor.postProcessorsBeforeInitialization
    *
    * BeanPostProcessor原理
    * populateBean(beanName, mbd, instanceWrapper);給bean進行屬性賦值
    * initializeBean
    * {
    * applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);
    * invokeInitMethods(beanName, wrappedBean, mbd);執行自定義初始化
    * applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
    *}
    *
    *
    *
    * 1)、指定初始化和銷毀方法;
    * 通過@Bean指定init-method和destroy-method;
    * 2)、通過讓Bean實現InitializingBean(定義初始化邏輯),
    * DisposableBean(定義銷毀邏輯);
    * 3)、可以使用JSR250;
    * @PostConstruct:在bean創建完成並且屬性賦值完成;來執行初始化方法
    * @PreDestroy:在容器銷毀bean之前通知我們進行清理工作
    * 4)、BeanPostProcessor【interface】:bean的後置處理器;
    * 在bean初始化前後進行一些處理工作;
    * postProcessBeforeInitialization:在初始化之前工作
    * postProcessAfterInitialization:在初始化之後工作
    *
    * Spring底層對 BeanPostProcessor 的使用;
    * bean賦值,注入其他組件,@Autowired,生命周期註解功能,@Async,xxx BeanPostProcessor;
    *
    *
    *
    */
    spring中的自動裝配
    /**
    * 自動裝配;
    * Spring利用依賴注入(DI),完成對IOC容器中中各個組件的依賴關係賦值;
    *
    * 1)、@Autowired:自動注入:
    * 1)、默認優先按照類型去容器中找對應的組件:applicationContext.getBean(BookDao.class);找到就賦值
    * 2)、如果找到多個相同類型的組件,再將屬性的名稱作為組件的id去容器中查找
    * applicationContext.getBean("bookDao")
    * 3)、@Qualifier("bookDao"):使用@Qualifier指定需要裝配的組件的id,而不是使用屬性名
    * 4)、自動裝配默認一定要將屬性賦值好,沒有就會報錯;
    * 可以使用@Autowired(required=false);
    * 5)、@Primary:讓Spring進行自動裝配的時候,默認使用首選的bean;
    * 也可以繼續使用@Qualifier指定需要裝配的bean的名字
    * BookService{
    * @Autowired
    * BookDao bookDao;
    * }
    *
    * 2)、Spring還支持使用@Resource(JSR250)和@Inject(JSR330)[java規範的註解]
    * @Resource:
    * 可以和@Autowired一樣實現自動裝配功能;默認是按照組件名稱進行裝配的;
    * 沒有能支持@Primary功能沒有支持@Autowired(reqiured=false);
    * @Inject:
    * 需要導入javax.inject的包,和Autowired的功能一樣。沒有required=false的功能;
    * @Autowired:Spring定義的; @Resource、@Inject都是java規範
    *
    * AutowiredAnnotationBeanPostProcessor:解析完成自動裝配功能;
    *
    * 3)、 @Autowired:構造器,參數,方法,屬性;都是從容器中獲取參數組件的值
    * 1)、[標註在方法位置]:@Bean+方法參數;參數從容器中獲取;默認不寫@Autowired效果是一樣的;都能自動裝配
    * 2)、[標在構造器上]:如果組件只有一個有參構造器,這個有參構造器的@Autowired可以省略,參數位置的組件還是可以自動從容器中獲取
    * 3)、放在參數位置:
    *
    * 4)、自定義組件想要使用Spring容器底層的一些組件(ApplicationContext,BeanFactory,xxx);
    * 自定義組件實現xxxAware;在創建對象的時候,會調用接口規定的方法注入相關組件;Aware;
    * 把Spring底層一些組件注入到自定義的Bean中;
    * xxxAware:功能使用xxxProcessor;
    * ApplicationContextAware==》ApplicationContextAwareProcessor;
    *
    *
    *
    *
    */

     

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

    ※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    ※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

  • 特斯拉:兩年後你的車就能「自己」來找你

    特斯拉於上週六(9日)發佈了最新車載作業系統Version 7.1,此次升級對自動駕駛儀的多款主要功能進行了升級。最重要的就是「召喚」功能,即在無需司機駕駛的情況下,汽車可以自主進入或退出停車位或車庫。

    特斯拉的軟體升級是在2016年CES消費電子展之後進行的,今年展會上自動駕駛汽車和更先進的車載軟體成為汽車製造商中的兩大熱門主題。馬斯克(Elon Musk)認為,從技術上看,自動駕駛汽車將在未來24個月到36個月之間準備就緒。

    至於當前的「召喚」功能,其所能執行的任務還相當有限。馬斯克稱當前的反覆運算更像是遙控功能,而非自動駕駛功能。當前的「召喚」功能要求司機與汽車距離不超過10米。在使用這個功能時,司機需要持續監控和維持對汽車的控制。此外,特斯拉要求司機只能在地形平坦的私人停車位使用「召喚」功能。

    與此同時,Version 7.1最新升級還可讓特斯拉電動汽車自我泊車,無論是在平行還是垂直位置。特斯拉自動駕駛儀的自動引導功能也增加了更多限制,比如在居民區或沒有中央分隔線的公路上,速度更慢。而在其他公路上,自動引導功能也將車速限制為時速8公里或10公里以內。馬斯克表示,為了保證汽車安全行駛,這些新的限制完全合理。

    此外,特斯拉還添加了新的安全功能,比如曲線速度自我調整功能,汽車可以掃描前面公路上的曲線,自動駕駛儀可根據所得資訊自動調整速度。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※帶您來了解什麼是 USB CONNECTOR  ?

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    ※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

  • 《中國電動汽車標準化工作線圖》將於近日發佈

    1月11日,《中國電動汽車標準化工作路線圖》評審會在北京召開。《路線圖》由中國汽車技術研究中心等單位聯合制定,將於近日發佈。

    路線圖的定位

    本版路線圖的起止階段為2015年至2025年,通過對2015年至2025年電動汽車及其相關產業的技術發展、產業化和市場化發展的判斷和預測,制定2015年至2025年中國電動汽車標準化工作的具體目標和工作計畫。在對國內外電動汽車標準和法規進行總結和歸納的基礎上,著重分析和研究中國電動汽車在未來的10年中,電動汽車及其相關產業的技術發展、產業化和市場化發展的標準需求,以此作為中國電動汽車快速健康發展的主要技術支撐。路線圖中標準化工作實施期限分為:緊急(2015年1月至2015年12月)、短期(2016年1月至2017年12月)、中期(2018年1月至2020年12月)和長期(2021年1月至2025年12月)共4個階段。由上述內容構成的本路線圖,將成為指導從2015年至2025年中國電動汽車標準化工作的綱領性檔。

    路線圖的範圍

    a)電動車輛:純電動汽車、混合動力電動汽車(包括插電式和增程式)、燃料電池電動汽車以及電動車輛相關零部件等;

    b)基礎設施:充電樁、充電站、換電站和加氫站等;

    c)相關產業:電動汽車及電池的運輸、回收利用、教育培訓、搶險救援等。

    d) 本路線圖覆蓋基礎設施和相關產業的建設、運營、管理等。

    路線圖的目標

    路線圖的目標是有目的、有計劃、有步驟地建立起聯繫緊密、相互協調、層次分明、構成合理、相互支持、滿足應用需求的整體性、系統性、開放性的電動汽車標準體系,加速制定一系列由標準體系確定的具體標準,從而降低研究、生產、使用、維護及管理的成本和風險,使標準化工作發揮最佳效益,支撐和引導我國電動汽車產業的技術創新和快速發展,即:

    ——提出系統、科學的電動汽車標準體系;

    ——提出未來十年需要制修訂的標準專案;

    ——提出我國電動汽車標準及體系建設的實施步驟;

    ——促進科技創新;

    ——改變能源結構和推動節能減排;

    ——促進電動汽車大規模產業化;

    ——滿足科研、產業化、市場化運行和政府管理的需要;

    ——積極參與國際標準化工作,爭取中國標準走向世界。

    路線圖的實施

    通過對國內外電動汽車標準化工作的現狀的分析,為了滿足電動汽車產業的發展,未來標準的缺項進行了梳理,路線圖將通過表格和圖形的形式,對標準缺項進行系統的整理,按照時間序列來闡述從2015年1月至2025年12月共11年的標準制定計劃,計畫為4個階段(優先順序),分為緊急(2015年1月至2015年12月)、短期(2106年1月至2017年12月、中期(2018年1月至2020年12月)、長期(2021年1月至2025年12月)。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    ※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

    ※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

  • 電動摺疊腳踏車、滑板車搶攻最後一哩交通需求

    電動摺疊腳踏車、滑板車搶攻最後一哩交通需求

    傳統交通工具汽機車造成許多空氣污染與碳排放,許多廠商認為解決方案是電動車、電動機車,不過,也有人提出另一個想法,那就是何不更充分利用大眾運輸工具,只要解決捷運站到目的地的「最後一哩」交通需求即可鼓勵許多人不用自己開車、騎機車,而願意搭乘捷運。在 CES 2016 上,許多廠商都推出類似概念的產品。

    Cycle Board 推出「街道衝浪者」(Street Surfer)電動滑板三輪車,這輛滑板車的前端有兩輪,連接把手,負責轉向,較大的雙前輪也提供在人行道等不平坦路面上的穩定性,後端有一個小輪,把手可伸縮配合使用者身高,也可收疊起來方便攜帶,把手上除了剎車等基本控制,還可裝上手機。「街道衝浪者」充電一次可行駛 15 到 20 英里(24.1 到 32.2 公里),最高時速 20 英里(32.2 公里)。

    ▲ Street Surfer(Source:) Urban626 則推出 Urb-e 折疊式電動腳踏車,結構像是一把折疊刀,設計師宣稱可快速折疊,實測大約 1 秒鐘可折疊起來,便於帶電車車廂,或是裝進汽車後車廂,骨架以鋁打造,總重 35 英磅(15.876 公斤),時速最高 24 公里,充電 4 小時充飽後,可以行駛 32 公里。   由 Smart Rhino 推出的 Xcooter 同樣是電動折疊式腳踏車,以 X 形狀骨架收合,充電 3 小時可行駛 28 公里,最高時速 80 公里,重量 18 公斤。這些可折疊的電動腳踏車或許是解決捷運站到目的地交通問題的解決方案,不過售價可不便宜,Urb-e 售價 1,500 美元,將近 5 萬元新台幣,Xcooter 預售價 1,499 美元,而 2016 年 4 月正式上市時售價將為 1,799 美元,將近 6 萬元新台幣。

    (本文授權轉載自《》─〈〉)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    ※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享

    ※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

    ※評比南投搬家公司費用收費行情懶人包大公開

  • 工信部擬規範新能源汽車廢舊動力電池綜合利用

    工業和資訊化部近日就《新能源汽車廢舊動力蓄電池綜合利用行業規範條件》向社會公開徵求意見,擬要求已在禁止建設區域投產運營的廢舊動力蓄電池綜合利用企業,要在一定期限內通過“依法搬遷、轉產”等方式逐步退出。

    禁止建設區域包括:國家法律、法規、規章及規劃確定或縣級以上人民政府批准的自然保護區、生態功能保護區、風景名勝區、飲用水水源保護區、基本農田保護區和其他需要特別保護的區域等。

    意見稿還對廢舊動力電池綜合利用作出規範。廢舊動力蓄電池綜合利用企業應依據相關國家、行業標準,參考新能源汽車和動力蓄電池生產企業提供的拆卸、拆解技術資訊,嚴格遵循先梯級利用後再生利用的原則,提高綜合利用水準。

    根據意見稿,濕法冶煉條件下,鎳、鈷、錳的綜合回收率應不低於98%;火法冶煉條件下,鎳、稀土的綜合回收率應不低於97%;不得擅自丟棄、傾倒、焚燒與填埋廢舊動力電池中的有色金屬、石墨、塑膠、橡膠、隔膜、電解液等零部件和材料。

    在能源消耗方面,意見稿規定,企業應加強對拆卸、儲存、拆解、檢測和再生利用等環節的能耗管控,努力降低綜合能耗,提高能源利用效率,鼓勵企業採用先進適用的節能技術工藝及裝備。

    此外,工信部同日發佈《新能源汽車廢舊動力蓄電池綜合利用行業規範公告管理暫行辦法(徵求意見稿)》,擬對新能源汽車廢舊動力蓄電池綜合利用企業實行動態管理,委託相關專業機構負責協助做好公告管理相關工作。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

    ※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    ※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

  • 2016上海國際汽車新能源及智慧技術展覽會

    創新技術 智能演繹 展會日期:2016年6月28日-30日 展會地點:上海新國際博覽中心   觀眾數量:30,000人次(預計) 展覽週期:二年一屆,2016年首屆 同期展會:上海國際汽車零部件及相關服務展覽會   主辦單位: 中國國際貿易促進委員會上海市分會 中國國際貿易促進委員會汽車行業分會 中國汽車工程學會 上海市國際展覽有限公司   展位價格: 室內光地:650元/平方米(36平米起租) 標準展位:900元/平方米(9平米起租)   參展範圍: -節能汽車、純電動車,混合動力車,燃料電池車,輕型電動車,天然氣(液化氣)車,醇類及其他代用燃料車和節能汽車。 -電池、電機、電控等核心零部件和先進技術應用;輕量化材料、整車優化設計及混合動力等節能技術產品; 自動駕駛,汽車共用,模組化(集成化)構造,汽車車載資訊系統及智慧化設備;汽車相關後市場服務及產品。 -充電樁、充電機、配電櫃、充換電池及電池管理系統、停車場充電設施、智慧監控、充電站供電解決方案、充電站-智慧電網解決方案等。 -檢測,維修,監控,實驗,安全防護裝備及媒體等.   展會諮詢: 北京盛大超越國際展覽有限公司 連絡人:岳巍 先生 電話(微信):135 5286 5285 郵箱:     附:其他推薦展會   2016中國國際汽車新能源及技術應用展覽會 節能與新能源汽車產業發展規劃成果展覽會   展會時間:2016年10月13-16日 展會地點:北京•國家會議中心 展覽規模:30,000平方米(2015年) 觀眾數量:60,000人次(2015年) 展覽週期:每年一屆,2013年首屆 詳情請點擊  

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計

    ※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置,台北網頁設計,各種案例分享

  • 2016中國國際汽車新能源及技術應用展覽會|節能與新能源汽車產業發展規劃成果展覽會

    展會時間:2016年10月13-16日

    展會地點:北京-國家會議中心

    展會定位:
    唯一的國家級新能源汽車展覽展示平臺;中國參展企業最多、展覽面積最大、展品最為豐富的節能與新能源汽車展。

    展覽規模:30,000平方米(2015年)

    觀眾數量:60,000人次(2015年)

    展覽週期:每年一屆,2013年首屆

    支援單位:中華人民共和國工業和資訊化部

    批准單位:中華人民共和國科學技術部、中國國際貿易促進委員會

    主辦單位:中國國際貿易促進委員會機械行業分會、中國電工技術學會、汽車知識雜誌社、寰球時代汽車投資管理(北京)有限公司

    合作單位:北京盛大超越國際展覽有限公司

    展位價格:
    室內光地:1280元/平方米
    標準展位:11800元/個(3m*3m)

    參展範圍:

    整車類

    純電動車,混合動力車,燃料電池車,輕型電動車,天然氣(液化氣)車,醇類及其他代用燃料車和節能汽車。

    零部件類

    電池、電機、電控等核心零部件和先進技術應用;先進內燃機、高效變速器、輕量化材料、整車優化設計及混合動力等節能技術產品。

    充電設施

    充電樁、充電機、配電櫃、充換電池及電池管理系統、停車場充電設施、智慧監控、充電站供電解決方案、充電站-智慧電網解決方案等。

    新能源汽車發展成果展示;檢測,維修,監控,實驗,安全防護裝備及媒體等.

    連絡人:岳巍 先生  
    手機(微信):135 5286 5285
    郵箱:sales2@s-expo.com  

    附:其他推薦展會

    2016上海國際汽車新能源及智慧技術展覽會
    上海車展新能源姐妹展
    展會日期:2016年6月28日-30日
    展會地點:上海新國際博覽中心
    詳情請點擊

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    ※南投搬家前需注意的眉眉角角,別等搬了再說!

  • 重慶新建住宅將100%配備充電基礎設施

    1月11日,重慶市政府辦公廳公佈《重慶市加快電動汽車充電基礎設施建設實施方案》。方案要求,新建住宅配建的停車庫必須100%建設電動汽車充電基礎設施或預留建設安裝條件。到2020年,主城區將累計建成不少於30座公共充換電站。

    在主城區,凡新建的交通樞紐、超市賣場、商務樓宇,黨政機關、企事業單位辦公場所、學校、醫院、文化體育場館以及獨立用地的公共停車場、停車換乘(P+R)停車場等,按照不低於總停車位數量10%的比例,建設電動汽車充電基礎設施。

    對已建成的住宅社區及上述場所,要通過改造、加裝等方式,到2020年,達到不低於10%的比例,提供充電基礎設施。

    其他區縣(自治縣)城區要因地制宜,同樣按照不低於總停車位數量10%的比例,建設電動汽車充電基礎設施或預留建設安裝條件(包括預埋電力管線和預留電力容量)。

    此外,還將建設電動汽車公共充換電站。到2020年,主城區原則上按服務半徑每1公里提供1座公共充換電站,累計建成不少於30座公共充換電站;其他每個區縣(自治縣)城區至少建成1座公共充換電站;每個重點旅遊景區至少建成1-2座公共充換電站;凡具備安全條件的加油站、加氣站、高速公路服務區等實現充換電設施全覆蓋。

    不同場所執行不同電價 住宅區按合表用戶電價收費

    對向電力企業直接報裝接電的經營性集中式電動汽車充換電設施用電,執行大工業用電價格,2020年前暫免收取基本電費;其他充電基礎設施用電按其所在場所執行分類目錄電價。其中,向電力企業報裝的居民住宅區充電基礎設施用電,執行居民用電價格中的合表用戶電價;對居民自用充電基礎設施的用電與家庭用電分表計量,執行居民生活用電價格,且不納入居民生活用電階梯電價計算範圍;黨政機關、企事業單位和社會公共停車場等場所的充電基礎設施用電,執行一般工商業及其他類用電價格。電動汽車充電基礎設施用電按重慶市峰穀分時電價相關政策執行。

    電動汽車充電服務企業向使用者收取的充電服務費執行政府指導價,針對不同類別充電基礎設施,以電價為計費依據,服務費暫按每千瓦時不超過執行電價的50%收取,試行一年;試行期滿後,結合市場發展情況,逐步放開充電服務費,由市場競爭形成價格。

    此外,在安裝充電設施時,也將簡化審批手續。個人在自有停車庫、停車位元,各居住區、單位在已有停車泊位安裝電動汽車充電設施的,無需辦理建設用地規劃許可證、建設工程規劃許可證和施工許可證。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    ※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!