目錄
一、@Configuration
二、@ComponentScan
1. 說(shuō)明
2. 測(cè)試方法
3. 運(yùn)行結(jié)果
三、@PropertySource
1. 說(shuō)明
2. 測(cè)試方法
3. 測(cè)試結(jié)果
四、@Bean
1. 說(shuō)明
2. 添加驅(qū)動(dòng)依賴(lài)
3.?將Connection對(duì)象放入Spring容器
3. 測(cè)試
五、@Import
1. 說(shuō)明
2. 測(cè)試方法
3. 運(yùn)行結(jié)果
往期專(zhuān)欄&文章相關(guān)導(dǎo)讀?
1. Maven系列專(zhuān)欄文章
2. Mybatis系列專(zhuān)欄文章
3. Spring系列專(zhuān)欄文章?
一、@Configuration
? ? 此時(shí)基于注解的IOC配置已經(jīng)完成,但是我們依然離不開(kāi)Spring的xml配置文件。接下來(lái)我們脫離bean.xml,使用純注解實(shí)現(xiàn)IOC。
????????在真實(shí)開(kāi)發(fā)中,我們一般還是會(huì)保留xml配置文件,很多情況下使用配置文件更加方便。
? ? 純注解實(shí)現(xiàn)IOC需要一個(gè)Java類(lèi)代替xml文件。這個(gè)Java類(lèi)上方需要添加@Configuration,表示該類(lèi)是一個(gè)配置類(lèi),作用是代替配置文件。
SpringConfig配置類(lèi)?
package com.example;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
}
二、@ComponentScan
1. 說(shuō)明
作用:指定spring在初始化容器時(shí)掃描的包。
位置:配置類(lèi)上方
SpringConfig配置類(lèi)?
package com.example;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.example")
public class SpringConfig {
}
2. 測(cè)試方法
// 測(cè)試純注解
@Test
public void t4(){
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
StudentService service = ac.getBean("studentService",StudentService.class);
System.out.println(service.findById(8));
}
3. 運(yùn)行結(jié)果
OK,確實(shí)可以。?
三、@PropertySource
1. 說(shuō)明
作用:代替配置文件中的 <context:property-placeholder> 掃描配置文件
位置:配置類(lèi)上方
注意:配置文件位置前要加關(guān)鍵字 classpath
JdbcConfig配置類(lèi)?
package com.example;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import java.sql.Connection;
import java.sql.DriverManager;
@Configuration
@PropertySource("classpath:db.properties")
public class JdbcConfig {
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Override
public String toString() {
return "JdbcConfig[ " +
"username='" + username + '\'' +
", password='" + password + '\'' +
" ]";
}
}
2. 測(cè)試方法
// 測(cè)試純注解掃描jdbc
@Test
public void t5(){
ApplicationContext ac = new AnnotationConfigApplicationContext(JdbcConfig.class);
JdbcConfig config = (JdbcConfig) ac.getBean("jdbcConfig");
System.out.println(config);
}
3. 測(cè)試結(jié)果
?
OK,也是沒(méi)有問(wèn)題的。?
四、@Bean
1. 說(shuō)明
- 作用:將方法的返回值對(duì)象放入Spring容器中。如果想將第三方類(lèi)的對(duì)象放入容器,可以使用@Bean
- 位置:配置類(lèi)的方法上方。
- 屬性:name:給bean對(duì)象設(shè)置id
- 注意:@Bean修飾的方法如果有參數(shù),spring會(huì)根據(jù)參數(shù)類(lèi)型從容器中查找可用對(duì)象。
- 舉例:如果想將jdbc連接對(duì)象放入Spring容器,我們無(wú)法修改Connection源碼添加@Component,此時(shí)就需要使用將@Bean該對(duì)象放入Spring容器
2. 添加驅(qū)動(dòng)依賴(lài)
在pom.xml文件添加依賴(lài)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
3.?將Connection對(duì)象放入Spring容器
@Bean("connection")
public Connection getConnection(){
try{
Class.forName("com.mysql.cj.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql:///mysql","root","666666");
}catch (Exception e){
e.printStackTrace();
return null;
}
}
3. 測(cè)試
測(cè)試方法
// 測(cè)試注解bean
@Test
public void t6(){
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
Connection connection = (Connection) ac.getBean("connection");
System.out.println(connection);
}
運(yùn)行結(jié)果
OK,也是可以成功獲取連接的?
五、@Import
1. 說(shuō)明
作用:如果配置過(guò)多,會(huì)有多個(gè)配置類(lèi),該注解可以為主配置類(lèi)導(dǎo)入其他配置類(lèi)
位置:主配置類(lèi)上方上述我們講的,SpringConfig應(yīng)當(dāng)為主配置類(lèi),所以該注解應(yīng)當(dāng)添加在SpringConfig類(lèi)的上方
package com.example;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@ComponentScan("com.example")
@Import(JdbcConfig.class)
public class SpringConfig {
}
2. 測(cè)試方法
// 測(cè)試純注解
@Test
public void t4(){
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
JdbcConfig jdbcConfig = ac.getBean("jdbcConfig",JdbcConfig.class);
System.out.println(jdbcConfig);
}
3. 運(yùn)行結(jié)果
????????OK,確實(shí)也是可以獲取的。說(shuō)明主配置類(lèi)成功導(dǎo)入了。本章Spring IOC的學(xué)習(xí)就到這里了。?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-448984.html
往期專(zhuān)欄&文章相關(guān)導(dǎo)讀?
?????大家如果對(duì)于本期內(nèi)容有什么不了解的話(huà)也可以去看看往期的內(nèi)容,下面列出了博主往期精心制作的Maven,Mybatis等專(zhuān)欄系列文章,走過(guò)路過(guò)不要錯(cuò)過(guò)哎!如果對(duì)您有所幫助的話(huà)就點(diǎn)點(diǎn)贊,收藏一下啪。其中Spring專(zhuān)欄有些正在更,所以無(wú)法查看,但是當(dāng)博主全部更完之后就可以看啦。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-448984.html
1. Maven系列專(zhuān)欄文章
Maven系列專(zhuān)欄 | Maven工程開(kāi)發(fā) |
Maven聚合開(kāi)發(fā)【實(shí)例詳解---5555字】 |
2. Mybatis系列專(zhuān)欄文章
Mybatis系列專(zhuān)欄 | MyBatis入門(mén)配置 |
Mybatis入門(mén)案例【超詳細(xì)】 | |
MyBatis配置文件 —— 相關(guān)標(biāo)簽詳解 | |
Mybatis模糊查詢(xún)——三種定義參數(shù)方法和聚合查詢(xún)、主鍵回填 | |
Mybatis動(dòng)態(tài)SQL查詢(xún) --(附實(shí)戰(zhàn)案例--8888個(gè)字--88質(zhì)量分) | |
Mybatis分頁(yè)查詢(xún)——四種傳參方式 | |
Mybatis一級(jí)緩存和二級(jí)緩存(帶測(cè)試方法) | |
Mybatis分解式查詢(xún) | |
Mybatis關(guān)聯(lián)查詢(xún)【附實(shí)戰(zhàn)案例】 | |
MyBatis注解開(kāi)發(fā)---實(shí)現(xiàn)增刪查改和動(dòng)態(tài)SQL | |
MyBatis注解開(kāi)發(fā)---實(shí)現(xiàn)自定義映射關(guān)系和關(guān)聯(lián)查詢(xún) |
3. Spring系列專(zhuān)欄文章?
Spring系列專(zhuān)欄 | Spring IOC 入門(mén)簡(jiǎn)介【自定義容器實(shí)例】 |
IOC使用Spring實(shí)現(xiàn)附實(shí)例詳解 | |
Spring IOC之對(duì)象的創(chuàng)建方式、策略及銷(xiāo)毀時(shí)機(jī)和生命周期且獲取方式 | |
Spring DI簡(jiǎn)介及依賴(lài)注入方式和依賴(lài)注入類(lèi)型 | |
Spring IOC相關(guān)注解運(yùn)用——上篇 | |
Spring IOC相關(guān)注解運(yùn)用——下篇 | |
Spring AOP簡(jiǎn)介及相關(guān)案例 | |
注解、原生Spring、SchemaBased三種方式實(shí)現(xiàn)AOP【附詳細(xì)案例】 | |
Spring事務(wù)簡(jiǎn)介及相關(guān)案例 | |
Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API | |
Spring 事務(wù)的相關(guān)配置、傳播行為、隔離級(jí)別及注解配置聲明式事務(wù) |
到了這里,關(guān)于Spring IOC相關(guān)注解運(yùn)用——下篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!