您好,登錄后才能下訂單哦!
這篇文章主要介紹“Spring怎么使用IOC與DI實現完全注解開發”,在日常操作中,相信很多人在Spring怎么使用IOC與DI實現完全注解開發問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Spring怎么使用IOC與DI實現完全注解開發”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
方式一:@Component + @ComponentScan + @Value + @Autowired
首先還是pom文件,maven項目依賴必不可少。
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
然后,寫兩個Java Bean,一個是Student學生類、另一個是School學校類。
由于不寫xml配置,所以在兩個類上方都要加上 @Component 注解,通過注解的方式將其交給Spring IOC容器管理,@Value注解則用于給8種基本數據類型以及String類型做依賴注入,@Autowired是針對引用類型的,這里不再多說了。
package com.szh.bean; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * */ @Data @Component public class Student { @Value("張起靈") private String name; @Value("20") private Integer age; @Autowired private School school; }
package com.szh.bean; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * */ @Data @Component public class School { @Value("北京大學") private String name; @Value("北京市海淀區") private String address; }
下面要寫一個配置類,功能就是添加包掃描機制,確保上面那兩個@Component 注解修飾的Java Bean可以被Spring掃描并添加至容器中。
package com.szh.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** * */ @Configuration @ComponentScan(basePackages = "com.szh.bean") public class SpringConfig { }
最后是我們的測試類了。
package com.szh; import com.szh.bean.Student; import com.szh.config.SpringConfig; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; /** * */ public class MyTest { @Test public void testIocAnnotation() { ApplicationContext ioc = new AnnotationConfigApplicationContext(SpringConfig.class); Student student = (Student) ioc.getBean("student"); System.out.println(student); } }
方式二:@Configuration + @Bean
pom文件和方式一是一樣的。
下面是不一樣的Java Bean。
package com.szh.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * */ @Data @NoArgsConstructor @AllArgsConstructor public class Goods { private String name; private String info; }
package com.szh.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; /** * */ @Data @NoArgsConstructor @AllArgsConstructor public class Order { private Integer id; private BigDecimal totalFee; private Goods goods; }
然后是該方式對應的配置類,采用@Bean實現。
package com.szh.config; import com.szh.entity.Goods; import com.szh.entity.Order; import org.springframework.beans.factory.annotation.Autowire; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.math.BigDecimal; /** * */ @Configuration public class SpringConfig2 { @Bean public Goods goods() { return new Goods("聯想-拯救者", "一款不錯的游戲筆記本"); } @Bean public Order order(Goods goods) { return new Order(1, new BigDecimal(9999), goods); } }
最后是這種方式的測試類代碼。
@Test public void testIocAnnotation2() { ApplicationContext ioc = new AnnotationConfigApplicationContext(SpringConfig2.class); Order order = (Order) ioc.getBean("order"); System.out.println(order); System.out.println("IOC容器中存在的bean如下:"); String[] beanDefinitionNames = ioc.getBeanDefinitionNames(); for (String bean : beanDefinitionNames) { System.out.println(bean); } }
到此,關于“Spring怎么使用IOC與DI實現完全注解開發”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。