日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring学习笔记05-IOC常用注解(二)

發布時間:2024/7/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring学习笔记05-IOC常用注解(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • 2.3 關于 Spring 注解和 XML 的選擇問題
        • 2.4spring 管理對象細節
        • 2.5spring 的純注解配置
        • 2.5.1 待改造的問題
        • 2.5.2 新注解說明
          • 2.5.2.1 @Configuration
          • 2.5.2.2 @ComponentScan
          • 2.5.2.3 @Bean
          • 2.5.2.4 @PropertySource
          • 2.5.2.5 @Import
          • 2.5.2.6 通過注解獲取容器:

2.3 關于 Spring 注解和 XML 的選擇問題

注解的優勢:
配置簡單,維護方便(我們找到類,就相當于找到了對應的配置)。
XML 的優勢:
修改時,不用改源碼。不涉及重新編譯和部署。
Spring 管理 Bean 方式的比較:

2.4spring 管理對象細節

基于注解的 spring IoC 配置中,bean 對象的特點和基于 XML 配置是一模一樣的。

2.5spring 的純注解配置

寫到此處,基于注解的 IoC 配置已經完成,但是大家都發現了一個問題:我們依然離不開 spring 的 xml 配
置文件,那么能不能不寫這個 bean.xml,所有配置都用注解來實現呢?
當然,同學們也需要注意一下,我們選擇哪種配置的原則是簡化開發和配置方便,而非追求某種技術。

2.5.1 待改造的問題

我們發現,之所以我們現在離不開 xml 配置文件,是因為我們有一句很關鍵的配置:
<context:component-scan base-package=“com.itheima”></context:component-scan>
如果他要也能用注解配置,那么我們就離脫離 xml 文件又進了一步。 另外,數據源和 JdbcTemplate 的配置也需要靠注解來實現。

<!-- 配置 dbAssit --> <bean id="dbAssit" class="com.itheima.dbassit.DBAssit"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 配置數據源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql:///spring_day02"></property> <property name="user" value="root"></property><property name="password" value="1234"></property> </bean>

2.5.2 新注解說明

2.5.2.1 @Configuration

作用:
??用于指定當前類是一個 spring 配置類,當創建容器時會從該類上加載注解。獲取容器時需要使用
??AnnotationApplicationContext(有@Configuration 注解的類.class)。
屬性:
??value:用于指定配置類的字節碼

示例代碼:

@Configuration public class SpringConfiguration { }

注意:
??我們已經把配置文件用類來代替了,但是如何配置創建容器時要掃描的包呢?
請看下一個注解。

2.5.2.2 @ComponentScan

作用:
??用于指定 spring 在初始化容器時要掃描的包。作用和在 spring 的 xml 配置文件中的:<context:component-scan base-package=“com.itheima”/>是一樣的。
屬性:
??basePackages:用于指定要掃描的包。和該注解中的 value 屬性作用一樣。
示例代碼:

@Configuration @ComponentScan("com.itheima") public class SpringConfiguration { }

注意:
??我們已經配置好了要掃描的包,但是數據源和 JdbcTemplate 對象如何從配置文件中移除呢?
請看下一個注解。

2.5.2.3 @Bean

作用:
??該注解只能寫在方法上,表明使用此方法創建一個對象,并且放入 spring 容器。
屬性:
??name:給當前@Bean 注解方法創建的對象指定一個名稱(即 bean 的 id)。

2.5.2.4 @PropertySource

作用:
??用于加載.properties 文件中的配置。例如我們配置數據源時,可以把連接數據庫的信息寫到
??properties 配置文件中,就可以使用此注解指定 properties 配置文件的位置。
屬性:
??value[]:用于指定 properties 文件位置。如果是在類路徑下,需要寫上 classpath

public class JdbcConfig {//spel表達式 插值表達式@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;/*** 創建一個數據源,并存入 spring 容器中* @return*/@Bean(name="dataSource")public DataSource createDataSource() {try {ComboPooledDataSource ds = new ComboPooledDataSource();ds.setDriverClass(driver);ds.setJdbcUrl(url);ds.setUser(username);ds.setPassword(password);return ds;} catch (Exception e) {throw new RuntimeException(e);} } }

jdbc.properties 文件:

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/day44_ee247_spring jdbc.username=root jdbc.password=1234

注意:
??此時我們已經有了兩個配置類,但是他們還沒有關系。如何建立他們的關系呢?
請看下一個注解。

2.5.2.5 @Import

作用:
??用于導入其他配置類,在引入其他配置類時,可以不用再寫@Configuration 注解。當然,寫上也沒問題。
屬性:
??value[]:用于指定其他配置類的字節碼。
示例代碼:

@Configuration @ComponentScan(basePackages = "com.itheima.spring") @Import({ JdbcConfig.class}) public class SpringConfiguration { } @Configuration @PropertySource("classpath:jdbc.properties") public class JdbcConfig{ }

注意:
??我們已經把要配置的都配置好了,但是新的問題產生了,由于沒有配置文件了,如何獲取容器呢?
請看下一小節。

2.5.2.6 通過注解獲取容器:

??ps:當注解類是AnnotationConfigApplicationContext 的參數時,該注解類上的@Configuration可以省略

ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class);

總結

以上是生活随笔為你收集整理的spring学习笔记05-IOC常用注解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。