石膏內藏犀牛角 越南機場破獲125公斤走私

摘錄自2019年7月28日中央社報導

越南當局今天25日在首都河內一座機場破獲犀牛角走私案,查獲55支、重達125斤藏在石膏內的犀牛角。

目前不清楚這些犀牛角來自哪個非洲國家。警方同日逮捕一名涉及野生動物走私的主要嫌疑人與另兩名男子。警方發現他們停在停車場的車內放了7具冷凍老虎屍體,之後循線逮捕。

越南黑市販售象牙、穿山甲、老虎器官和犀牛角等野生動物,其中尤以犀牛角特別昂貴,一公斤價格可高達6萬美元。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

南韓推動十年逐步禁塑計畫

摘錄自2018年9月5日公視新聞報導

南韓為了加強環保,制定減少塑膠生產量的「十年計畫」,提出未來十年,將逐步禁止一次性塑膠杯及塑膠吸管;此外,廚餘處理因秤重計費成效不錯,將逐漸取消以袋計費方式,估計可減少三成五的食物浪費。

南韓人每年大約用掉257億個一次性塑膠杯,以及100億根一次性塑膠吸管,為了不再製造更多塑膠產品以及減少資源浪費,南韓政府制定十年計劃,2027年之前,一次性使用的塑膠杯、塑膠吸管,將逐步禁用,此外,產品過度包裝也會被禁止;預計將南韓本土製造出的廢棄物,從目前的處理費每10億韓圜、相當於台幣274萬為單位的95.5噸,減少到76.4噸。

南韓環境部資源再生局副局長椿萬(音譯)表示,「我們首要任務就是在整個生產、消耗、管理,以及回收過程中減少浪費,並且將廢物重新配流到生產過程中。」

此外,為了減少食物的浪費,將強制規定所有超過一定規模的公寓大樓安裝有無線射頻辨識系統RFID的廚餘回收桶,計畫於2022年前達成,各餐廳於10年內強制安裝;持有RFID卡的民眾,必須先刷卡,蓋子才會打開,將廚餘倒進去後依重量繳費,也就是說,廚餘越重就越貴,一改過去無RFID回收桶而必須用回收袋固定計費的方法。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

俄出現「鯨魚監獄」 傳跟中國建水族館有關

摘錄自2018年11月16日大紀元報導

近日,一家位於俄羅斯遠東納霍德卡港附近的圈養著100多頭鯨魚的水上農場被媒體曝光,據知情者提供的無人機航拍視頻顯示,在海邊圈起的一片水域中,安放有十個水槽,在開放的七個水槽中,可以看到其中有很多鯨魚,大多數為珍稀的白鯨,超過90頭。俄羅斯動物保護人士指責這些圈養鯨魚的環境狹小惡劣,可以被稱為是「鯨魚監獄」。

俄羅斯動物保護組織「撒哈林生態監督」負責人德米德里•利西岑對此評論說:「近年來中國興建了大批的水族館,僅在最近兩年就有32家新的水族館開業。每個水族館都需要數頭鯨魚,所以中國方面有巨大的需求,而這些鯨魚都是為向中國出口而捕撈的。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

珍奶風席捲馬來西亞 掀起清真認證與環保話題

摘錄自2019年7月28日中央社報導

台灣珍奶近年來席捲東南亞市場,馬來西亞各大街小巷可隨處看見珍珠奶茶飲料店,某些街道還被稱作「奶茶街」,這股珍珠奶茶風潮也在當地帶動了清真、健康及環保等話題。

馬來西亞穆斯林人口超過1900萬人,對於源自台灣的珍珠奶茶,一名穆斯林網民近期就在網路上開始探討眾多席捲馬國的珍珠奶茶品牌,是否取得清真認證,引起網民熱烈討論。

伊斯蘭教是馬國官方宗教,馬來西亞同時奉行伊斯蘭法及聯邦憲法,穆斯林日常生活食用或碰觸身體的產品,必須符合伊斯蘭教義,即為「清真(Halal)」,避免碰觸包括豬和酒精等的不潔之物。獲得清真認證的產品從原物料開始到產品處理都必須嚴格把關。

除了清真認證受到關注之外,珍珠奶茶飲料杯主要都以塑膠材質為主,人們在飲用後隨處拋棄杯子的現象已經對環境帶來破壞,也受到許多環保人士的批評。

其中,最受熱議的奶茶街位於雪蘭莪州(Selangor)首邦市(Subang)SS15區,此地區約有近15家珍珠奶茶店,缺乏公德心的消費者在飲用奶茶後隨手將奶茶杯丟棄在店門前、溝渠、階梯上,幾乎隨處可見珍奶杯及吸管、塑膠袋,嚴重影響市容。

清道夫在收拾「殘局」後,堆積如山的樹膠杯及吸管塑膠袋更是讓人看了目瞪口呆,台灣珍珠奶茶風行馬來西亞,與馬國政府近期所推動的「減糖」、「減塑」、「禁吸管」政策背道而馳。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

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

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

2020國際觀鳥馬拉松 12/5開跑

由雲嘉南風景區管理處主辦的2020台灣國際觀鳥馬拉松大賽,有32支隊伍報名參加,其中國內隊伍有29隊,國際隊有3隊。雲網頁設計管處徐振能處長表示,競賽將於12月5日舉辦,今年有親子隊7隊,每隊可獲得精美獎品1份。而3支國際隊伍鳥如何寫文案友,分別來自南非、美國、加拿大、愛爾蘭等國。

徐振能處長表示,這項國際觀鳥馬拉松iphone維修大賽於2012年開始舉辦,是全台網頁設計唯一比賽範圍跨越雲林、嘉義、台南等3縣市,貨運賞鳥環境從濱海到山巔,鳥類涵蓋水鳥與山鳥。今年活動報名至10月31日截止,原訂國內隊報名隊伍數25隊,報名隊數卻有29隊,為滿足鳥友需求增加4隊。

徐振能處長表示,台北網頁設計為鼓勵親子組租車隊參加,凡包裝行銷參賽可獲得精美獎品1份,今年親子隊台北網頁設計有7隊,另外,報名者呈FB行銷現年輕化,有35%屬年輕網頁設計公司鳥友。歷年賽事至少有6國以上銷售文案賞鳥人士來台參加,受肺炎疫情影響,今年有3支國際隊伍,分別來自南非、美國、加拿大、愛爾蘭等國。

鼓勵廢塑膠回收!印尼泗水「空瓶當車票」

摘錄自2018年11月12日民視報導

印尼第二大城泗水為了鼓勵民眾回收塑膠廢棄物,推動了「用塑膠空瓶當車票」的活動,只要用塑膠空瓶就能換公車車票,免費在市區搭一趟車。這不僅鼓勵民眾回收塑膠廢棄物,也增加大眾運輸的使用率,印尼政府希望藉這項活動,在2020年前讓印尼免受塑膠塑廢棄物之苦。

泗水衛生局官員迪居尼亞托羅表示:「為避免塑膠瓶造成環境污染問題,我們呼籲居民回收塑膠空瓶,用這些空瓶來換公車車票。」

這項活動每天回收平均200公斤塑膠空瓶,周末回收數更高,從活動開始到現在,回收量已累積高達39公噸。

印尼是僅次於中國全球最大塑膠垃圾製造國之一,其中泗水的日常垃圾中,就有15%是塑膠廢棄物。當地政府也表示,這項活動讓塑膠廢棄物具有實用價值,讓民眾更關注這項問題。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

歐洲熱浪向北挺進 格陵蘭冰層恐加速融化

摘錄自2019年7月26日中央社報導

聯合國於26日指出,席捲歐洲的熱浪有往北移動跡象,位於格陵蘭的全球第二大冰層可能會加速融化,厚度將接近或甚至低於2012年最薄紀錄。聯合國世界氣象組織(WMO)發言人努利斯(Clare Nullis)表示,由非洲北部往北移動的熱氣流,25日在歐洲各地造成破紀錄高溫,且氣溫新高點與原高點的差距可多達攝氏2至4度,「完全令人難以置信」。

努利斯表示,根據預測,熱氣流「正把高溫傳送到格陵蘭」,而這將「導致高溫,因此加速格陵蘭冰層融化」。「我們還不知道2012年的紀錄會不會被打破,但距離不遠了。」「光是7月,它(格陵蘭冰層)就因表面融化,失去1600億噸的冰,大約相當6400萬個奧運規格游泳池的冰量。僅僅7月,且僅僅是冰層表面融化,還不包括海洋冰融。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

福島災民立場不一的現況

文:宋瑞文(媽媽監督核電廠聯盟特約撰述)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

幼獸淪名流自拍炫富工具後棄養

摘錄自2018年11月15日公視報導

法國警方19號在香榭大道攔下一輛名車藍寶堅尼,發現裡面有一隻不到兩個月大的獅子寶寶,動保團體表示有越來越多人,會買一隻幼獸自拍炫富,然後棄養,形成歪風。

動保團體「300萬之友」主席胡庭說:「問題就出在馬戲團,他們可以利用野生動物(表演),法國馬戲團大約有1500隻野生動物,可怕的是這些馬戲團有繁殖的權利。」

胡庭認為,買幼獸自拍並上傳這群媒體的歪風,是來自波斯灣阿拉伯國家,這些小動物長大就會被丟棄;他們在約旦撿到三、四十隻被丟棄的小獅子,但更令人擔心的是,現在法國似乎也開始流行,過去半年,他們陸續撿到四隻獅子幼獸。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

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

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

【Spring註解驅動開發】在@Import註解中使用ImportBeanDefinitionRegistrar向容器中註冊bean

寫在前面

在前面的文章中,我們學習了如何使用@Import註解向Spring容器中導入bean,可以使用@Import註解快速向容器中導入bean,小夥伴們可以參見《【Spring註解驅動開發】使用@Import註解給容器中快速導入一個組件》。可以在@Import註解中使用ImportSelector接口導入bean,小夥伴們可以參見《【Spring註解驅動開發】在@Import註解中使用ImportSelector接口導入bean》一文。今天,我們就來說說,如何在@Import註解中使用ImportBeanDefinitionRegistrar向容器中註冊bean。

項目工程源碼已經提交到GitHub:https://github.com/sunshinelyz/spring-annotation

ImportBeanDefinitionRegistrar概述

概述

我們先來看看ImportBeanDefinitionRegistrar是個什麼鬼,點擊進入ImportBeanDefinitionRegistrar源碼,如下所示。

package org.springframework.context.annotation;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.core.type.AnnotationMetadata;

public interface ImportBeanDefinitionRegistrar {

	default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry,
			BeanNameGenerator importBeanNameGenerator) {

		registerBeanDefinitions(importingClassMetadata, registry);
	}

	default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
	}

}

由源碼可以看出,ImportBeanDefinitionRegistrar本質上是一個接口。在ImportBeanDefinitionRegistrar接口中,有一個registerBeanDefinitions()方法,通過registerBeanDefinitions()方法,我們可以向Spring容器中註冊bean實例。

Spring官方在動態註冊bean時,大部分套路其實是使用ImportBeanDefinitionRegistrar接口。

所有實現了該接口的類都會被ConfigurationClassPostProcessor處理,ConfigurationClassPostProcessor實現了BeanFactoryPostProcessor接口,所以ImportBeanDefinitionRegistrar中動態註冊的bean是優先於依賴其的bean初始化的,也能被aop、validator等機制處理。

使用方法

ImportBeanDefinitionRegistrar需要配合@Configuration和@Import註解,@Configuration定義Java格式的Spring配置文件,@Import註解導入實現了ImportBeanDefinitionRegistrar接口的類。

ImportBeanDefinitionRegistrar實例

既然ImportBeanDefinitionRegistrar是一個接口,那我們就創建一個MyImportBeanDefinitionRegistrar類,實現ImportBeanDefinitionRegistrar接口,如下所示。

package io.mykit.spring.plugins.register.condition;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author binghe
 * @version 1.0.0
 * @description ImportBeanDefinitionRegistrar的實現類
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    /**
     * AnnotationMetadata: 當前類的註解信息
     * BeanDefinitionRegistry:BeanDefinition註冊類
     * 通過調用BeanDefinitionRegistry接口的registerBeanDefinition()方法,可以將所有需要添加到容器中的bean注入到容器中。
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry){

    }
}

可以看到,這裏,我們先創建了MyImportBeanDefinitionRegistrar類的大體框架。接下來,我們在PersonConfig2類上的@Import註解中,添加MyImportBeanDefinitionRegistrar類,如下所示。

@Configuration
@Import({Department.class, Employee.class, MyImportSelector.class, MyImportBeanDefinitionRegistrar.class})
public class PersonConfig2 {

接下來,創建一個Company類,作為測試測試ImportBeanDefinitionRegistrar接口的bean,如下所示。

package io.mykit.spring.plugins.register.bean;

/**
 * @author binghe
 * @version 1.0.0
 * @description 測試ImportBeanDefinitionRegistrar接口的使用
 */
public class Company {
}

接下來,就要實現MyImportBeanDefinitionRegistrar類中的registerBeanDefinitions()方法的邏輯了,添加邏輯后的registerBeanDefinitions()方法如下所示。

    /**
     * AnnotationMetadata: 當前類的註解信息
     * BeanDefinitionRegistry:BeanDefinition註冊類
     * 通過調用BeanDefinitionRegistry接口的registerBeanDefinition()方法,可以將所有需要添加到容器中的bean注入到容器中。
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry){
        boolean employee = registry.containsBeanDefinition("employee");
        boolean department = registry.containsBeanDefinition("department");
        if (employee && department){
            BeanDefinition beanDefinition = new RootBeanDefinition(Company.class);
            registry.registerBeanDefinition("company", beanDefinition);
        }
    }

registerBeanDefinitions()方法的實現邏輯很簡單,就是判斷Spring容器中是否同時存在以employee命名的bean和以department命名的bean,如果同時存在以employee命名的bean和以department命名的bean,則向Spring容器中注入一個以company命名的bean。

接下來,我們就運行SpringBeanTest類中的testAnnotationConfig7()方法來進行測試,輸出結果信息如下所示。

org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
personConfig2
io.mykit.spring.plugins.register.bean.Department
io.mykit.spring.plugins.register.bean.Employee
io.mykit.spring.plugins.register.bean.User
io.mykit.spring.plugins.register.bean.Role
person
binghe001

可以看到,在輸出結果中,並沒有看到“company”,這是因為輸出結果中存在io.mykit.spring.plugins.register.bean.Department和io.mykit.spring.plugins.register.bean.Employee,並不存在我們代碼邏輯中的department和employee。所以,我們將registerBeanDefinitions()方法的邏輯稍微修改下,修改后的代碼如下所示。

/**
  * AnnotationMetadata: 當前類的註解信息
  * BeanDefinitionRegistry:BeanDefinition註冊類
  * 通過調用BeanDefinitionRegistry接口的registerBeanDefinition()方法,可以將所有需要添加到容器中的bean注入到容器中。
  */
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry){
    boolean employee = registry.containsBeanDefinition(Employee.class.getName());
    boolean department = registry.containsBeanDefinition(Department.class.getName());
    if (employee && department){
        BeanDefinition beanDefinition = new RootBeanDefinition(Company.class);
        registry.registerBeanDefinition("company", beanDefinition);
    }
}

接下來,我們再次運行SpringBeanTest類中的testAnnotationConfig7()方法來進行測試,輸出結果信息如下所示。

org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
personConfig2
io.mykit.spring.plugins.register.bean.Department
io.mykit.spring.plugins.register.bean.Employee
io.mykit.spring.plugins.register.bean.User
io.mykit.spring.plugins.register.bean.Role
person
binghe001
company

可以看到,此時輸出了company,說明Spring容器中已經成功註冊了以company命名的bean。

好了,咱們今天就聊到這兒吧!別忘了給個在看和轉發,讓更多的人看到,一起學習一起進步!!

項目工程源碼已經提交到GitHub:https://github.com/sunshinelyz/spring-annotation

寫在最後

如果覺得文章對你有點幫助,請微信搜索並關注「 冰河技術 」微信公眾號,跟冰河學習Spring註解驅動開發。公眾號回復“spring註解”關鍵字,領取Spring註解驅動開發核心知識圖,讓Spring註解驅動開發不再迷茫。

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

【其他文章推薦】

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

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

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

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

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

※教你寫出一流的銷售文案?