JavaEE課後作業0216-IOC屬性注入方式、getBean五種用法、singleton與prototype的區別、Junit與Druid

1、IOC屬性注入有哪幾種方式?

IOC屬性注入的方式一共有4種,分別爲

  1. set注入

    本質是調用實體類的setXXX()方法來完成對象的創建

    在配置文檔中使用<property name="" value=""/>標籤

  2. 構造器注入

    本質是調用實體類的構造方法來創建對象

    在配置文檔中使用<constructor-arg name=" " value=""/>標籤

  3. @value注入

    使用@value註解在實體類的屬性上,註解的值與屬性的值進行綁定,不推薦這樣子講屬性的值寫死

    開啓註解掃描

     <context:component-scan base-package="包名"/>
  4. 註解注入(推薦使用)

    使用@Configuration註解標註過的類相當於一個xml配置文檔,而使用@Bean標記過的方法相當於xml配置文檔中的<bean></bean>標籤

2、bean的id和name屬性的區別

  1. id的命名必須要滿足XML的命名規範(不能以數字、符號開頭,不能有空格等),而name的命名沒有這麼多的限定
  2. 在同一個上下文中,id和name之間的命名不能衝突,也就是id和id、id和name、name和name之間,都不能重名
  3. id只能取一個值,而name可以有多個值

3、說說getBean的五種用法的區別

  1. context.getBean(String id/name)

    通過id值或name值進行找,找到就返回一個Object類型的對象,需要強制類型轉換

  2. context.getBean(Class clazz)

    通過類型查找,無序類型轉換,但是可能會存在多個類型相同的類型之間衝突,分不清要的是哪一個

  3. context.getBean(String id/name , Class clazz)

    通過類型和id/name查找,準確,無序類型轉換,不衝突

  4. context.getBean(Class clazz , Object…objs)

    使用類型,通過工廠方法,使用objs初始化對象的參數列表

  5. context.getBean(String id/name , Object…objs)

    使用id/name,通過工廠方法,使用objs初始化對象的參數列表

4、說說以下註解的作用

  1. @Component

    添加在實體類上,表示一個組件

  2. @Service

    添加在服務層,表示是服務層的代碼

  3. @Controller

    添加在控制層,表示是控制層的代碼

  4. @Repository

    添加在接口上,表示是接口

  5. @Bean

    添加在方法上,便是一個Bean對象

  6. @Configuration

    配置註解,添加在配置類上,相當於一個配置文檔

  7. @Scope

    生存範圍,默認是單例(singleton),可以更改爲非單例(prototype)

  8. @Lazy

    加載策略,默認爲懶加載(true),可以更改爲積極加載(false)

  9. @Value

    對實體類的屬性進行賦值綁定,不推薦使用

  10. @Resource

    根據名稱自動注入

  11. @Autowired

    根據類型自動注入

  12. @Qualify

    與@Autowired結合,先按照類型進行尋找,如果類型衝突,就按照名稱尋找

5、什麼是Druid?

  1. 數據庫連接池

    數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重複使用一個現有的數據庫連接,而不是重新建立一個。

    最小連接數:連接池一直保持的數據庫連接

    最大連接數:是連接池能申請的最大連接數,如果數據庫連接請求超過次數,後面的數據庫連接請求將被加入到等待隊列中

  2. Druid簡介

    Druid是爲監控而生的數據庫連接池,它是阿里巴巴開源平臺上的一個項目,是Java語言中最好的數據庫連接池,Druid能夠提供強大的監控和擴展功能。它可以替換DBCP和C3P0連接池,Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池

6、什麼是Junit?

  1. 什麼是Junit

    JUnit是一個Java語言的單元測試框架,Junit測試是程序員測試,即所謂白盒測試,因爲程序員知道被測試的軟件如何(How)完成功能和完成什麼樣(What)的功能

  2. 優點

    極限編程、重構

  3. 特性

    1. 用於測試期望結果的斷言(Assertion)
    2. 用於共享共同測試數據的測試工具
    3. 用於方便的組織和運行測試的測試套件
    4. 圖形和文本的測試運行器
  4. 常用註解

    1. @Before 註解:在每個測試方法之前執行;
    2. @After 註解:在每個測試方法之後執行;
    3. @BeforeClass 註解:在所有方法執行之前執行;
    4. @AfterClass 註解:在所有方法執行之後執行;
    5. @Test(timeout = xxx) 註解:設置當前測試方法在一定時間內運行完,否則返回錯誤
    6. @Test(expected = Exception.class) 註解:設置被測試的方法是否有異常拋出。拋出異常類型爲:Exception.class
    7. @Ignore 註解:註釋掉一個測試方法或一個類,被註釋的方法或類,不會被執行
    8. @Test註解:被註解後的類可以理解爲測試類的一個入口

7、Spring的單元測試需要添加什麼註解?

  1. @RunWith(SpringJUnit4ClassRunner.class)

  2. @ContextConfiguration(locations={“classpath*:spring-mybatis.xml”})

  3. @Import(Application.class)

    如果涉及DAO,需要通過Import導入環境來進行測試

8、說出工廠模式中的三個角色

  1. 定義功能的接口
  2. 實現接口的實現類
  3. 創建實現類的工廠類

9、說出 singleton與prototype的區別

  1. singleton(單例)

    只有一個實例對象

    當將一個Bean定義設置爲singleton作用域時,Spring IOC容器中只會存在一個共享的Bean實例,並且所有對Bean的請求,只要id與該Bean定義相匹配,都只會返回該Bean的同一實例

  2. prototype

    訪問一次創建一個實例

    prototype作用域的Bean會在每次對該Bean請求(將其注入到另一個Bean中,或者以程序的方式調用容器的getBean()方法)時都創建一個新的Bean實例。對有狀態的Bean應使用prototype作用域,而對無狀態的Bean則應該使用singleton作用域。
    對於具有prototype作用域的Bean,Spring不能對該Bean的整個生命週期負責,具有prototype作用域的Bean創建後交由調用者負責銷燬對象回收資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章