<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
註解@component代表spring ioc 會把這個類掃描生成Bean範例
@Component public class Role{ @Value("1") private Long id; @Value("role_name_1") private String roleName; @Value("role_note_1") private String note; /***setter and getter****/ }
註解@Autowired代表在spring ioc 定位所有的Bean後,這個欄位需要按型別來進行注入。
@Component public class RoleImpl_1 implements RoleServer{ @Autowired private Role role = null; public ..... }
如果一個介面被兩次實現,則使用@Autowired註解來進行該介面注入會產生異常,因為@Autowired無法確定要使用的是哪一個實現類。可以使用@Qualifier註解來進行歧義消除。
@Component public class RoleController{ @Autowired @Qualifier("roleImple_2") private RoleServer server = null; public ..... }
在註解都都是通過@component來進行裝配Bean,但是@Component只能註解在類上,無法註解到方法上。而註解@Bean可以註解到方法上
@Bean(name = "dataSource") public DataSource getDataSource(){ Properties props = new Properties(); props.setProperty("driver","com.mysql.cj.jdbc.Driver"); props.setProperty("url","jdbc:mysql://localhost:3306/db"); ... try{ dataSource = BasicDataSourceFactory.createDataSource(props); }catch(Execption e){ e.printStackTrace(); } return dataSource; }
@Component public class RoleController{ @Autowired(name = "dataSource") private DataSource dataSource = null; public ..... }
如果我們將DataSource使用xml組態檔來進行設定,我們就無法使用註解@Bean來進行裝配。這時註解@ImportResource可以進行混合裝配(將第三方的xml引入進來進行裝配)。
<!--dbSource.xml--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db"/> ....... </bean>
@ComponentScan(basePackages={"com.test"}) @ImportResource({"classpath:dbSource.xml"}) //將dbSource.xml組態檔裝配到Ioc中來 public class ApplicationConfig{ }
@Component public class RoleController{ @Autowired private DataSource dataSource = null; public ..... }
如果有多個xml檔案,我們都想參照進來,可以在dbSource.xml組態檔中使用import元素來載入它
<!--spring-dataSource.xml--> ...........
<!--dbSource.xml--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db"/> ....... </bean> <import resourse="spring-dataSource.xml"/>
可以解決不同環境的切換需求,例如開發環境和測試環境不同,我們來看程式碼操作。
@Component public class ProfileDataSource{ //開發環境 @Bean(name = "devDataSource") @Profile("dev") public DataSource getDevDataSource(){ ...... } //測試環境 @Bean(name = "testDataSource") @Profile("test") public DataSource getTestDataSource(){ ...... } }
當啟動Java設定Profile時,可以發現兩個Bean並不會載入到IOC容器中,需要自行啟用Profie。我們可以使用JVM啟動目錄或在整合測試環境中使用@ActiveProfiles進行定義
//使用@ActiveProfiles啟用Profie @RunWith(SpringJunit4ClassRunner.class) @ContextConfiguration(classes=ProfileTest.class) @ActiveProfiles("dev") //啟用開發環境的Profile public class ProfileTest{ }
//使用JVM引數啟用Profie JAVA_OPTS="-Dspring.profiles.active=test"
可以使用註解@PropertySource來載入屬性檔案(properties)。
# dataSource.properties jdbc.database.driver=com.mysql.cj.jdbc.Driver jdbc.database.url=jdbc:mysql://localhost:3306/db .......
@Configuration @PropertySource(value = {"classpath:dataSource.properties"},{ignoreResourceNotFound=true}) public class ApplicationConfig{ }
ignoreResourceNotFound=true,如果找不到該屬性檔案則忽略它。
到此這篇關於Spring IOC 常用註解與使用的文章就介紹到這了,更多相關Spring IOC 註解與使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45