您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Spring IOC常用注解有哪些與如何使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Spring IOC常用注解有哪些與如何使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
注解@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常用注解有哪些與如何使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。