javascript
java 装配_JAVA入门[13]-Spring装配Bean
一、概要
Sping裝配bean主要有三種裝配機制:
在XML中進行顯式配置。
在Java中進行顯式配置。
隱式的bean發現機制和自動裝配。
原則:
建議盡可能地使用自動配置的機制,顯式配置越少越好。當你必須要顯式配置bean的時候(比如,有些源碼不是由你來維護的,而當你需要為這些代碼配置bean的時候),我推薦使用類型安全并且比XML更加強大的JavaConfig。最后,只有當你想要使用便利的XML命名空間,并且在JavaConfig中沒有同樣的實現時,才應該使用XML。
二、自動裝配
Spring從兩個角度來實現自動化裝配:
組件掃描(component scanning):Spring會自動發現應用上下文中所創建的bean。
自動裝配(autowiring):Spring自動滿足bean之間的依賴
1.組件掃描
@Component注解:添加注解表明該類會作為組件類,并告知Spring要為這個類創建bean。
package bean;
import org.springframework.stereotype.Component;
@Component
public class Category {
private int cateId;
public int getCateId() {
return this.cateId;
}
public void setCateId(int id) {
this.cateId = id;
}
@Override
public String toString() {
return " 商品類型 id=" + this.cateId;
}
}
2.啟用組件掃描兩種方式:
①使用XML來啟用組件掃描,在applicationContext.xml配置:
單元測試:
@ContextConfiguration(locations = "classpath*:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class testAutowireXml {
@Autowired
private Category category;
@Test
public void TestXmlBean() {
Assert.assertNotNull(category);
}
}
②使用java配置
前面的bean類不做任何調整,通過@ComponentScan注解實現自動掃描。例如新建java配置文件BeanConfig.java
@Configuration
@ComponentScan(basePackageClasses = bean.Category.class)
public class BeanConfig {
}
單元測試:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = BeanConfig.class)
public class testAutowireJava {
@Autowired
private Category category;
@Test
public void categoryNotNull() {
Assert.assertNotNull(category);
}
}
三、JavaConfig裝配bean
上面的BeanConfig就是用java config方式實現的。java Config也是一個java類,但它不應該包含任何業務邏輯,也不應該侵入到業務邏輯代碼之中,通常會將JavaConfig放到單獨的包中。
創建java config關鍵是使用@Configuration ,表明這個類是一個配置類,該類應該包含在Spring應用上下文中如何創建bean的細節。
在JavaConfig中聲明bean,我們需要編寫一個方法,這個方法會創建所需類型的實例,然后給這個方法添加@Bean注解。
我們新建一個config文件JavaConfig.java,是在BeanConfig.java基礎上去掉@ComponentScan注解,并添加category()返回Category實例。
@Configuration
public class JavaConfig {
@Bean
public Category category(){
return new Category();
}
}
單元測試:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = JavaConfig.class)
public class testJavaConfig {
@Autowired
private Category category;
@Test
public void testCategoryBean(){
Assert.assertNotNull(category);
}
}
四、XML方式裝配bean
在JAVA入門[3]—Spring依賴注入這篇筆記中包含了如何通過xml方式裝配bean實例。
1.構造器傳參
①首先為Category添加構造函數:
public class Category {
private int cateId;
public Category() {
}
public Category(int id) {
cateId = id;
}
public int getCateId() {
return this.cateId;
}
public void setCateId(int id) {
this.cateId = id;
}
@Override
public String toString() {
return " 商品類型 id=" + this.cateId;
}
}
②applicationContext添加bean節點,為constructor-arg設置Id或者index。
或
③單元測試:
@ContextConfiguration(locations = "classpath*:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class testAutowireXml {
@Autowired
private Category category;
……
@Test
public void testId(){
Assert.assertEquals(100,category.getCateId());
}
}
④c-命名空間
這種語法用起來簡化一些。
調整②中的bean節點:
或
2.設置屬性 :
①通過為bean設置property實現屬性
②p-命名空間
前面的bean配置可以簡化為:
五、屬性占位符
Spring支持將屬性定義到外部的屬性的文件中,并使用占位符值將其插入到Spring bean中。在Spring裝配中,占位符的形式為使用“${ ... }”包裝的屬性名稱。
config.properties:
cateid=100
spring-config.xml:
classpath:properties/config.properties
總結
以上是生活随笔為你收集整理的java 装配_JAVA入门[13]-Spring装配Bean的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 树的层次遍历_Java遍历树的
- 下一篇: gradle idea java ssm