//省略getter和setter
}
2、在Spring配置文件(chapter12/dependecyInjectWithAnnotation.xml)添加如下Bean配置:
Java代码
1.
3、测试方法如下:
Java代码
1. @Test
2. public void testAutowiredForField() {
3. TestBean12 testBean12 = ctx.getBean("testBean12", TestBean12.class);
4. Assert.assertEquals("hello", testBean12.getMessage());
5. }
@Test
public void testAutowiredForField() {
TestBean12 testBean12 = ctx.getBean("testBean12", TestBean12.class);
Assert.assertEquals("hello", testBean12.getMessage());
}
字段注入在基于XML配置中无相应概念,字段注入不支持静态类型字段的注入。
(3)、方法参数注入:通过将@Autowired注解放在方法上来完成方法参数注入。
1、准备测试Bean,在方法上添加@AutoWired注解:
Java代码
1. package cn.javass.spring.chapter12;
2. import org.springframework.beans.factory.annotation.Autowired;
3. public class TestBean13 {
4. private String message;
5. @Autowired //setter方法注入
6. public void setMessage(String message) {
7. this.message = message;
8. }
9. public String getMessage() {
10. return message;
11. }
12. }
package cn.javass.spring.chapter12;
import org.springframework.beans.factory.annotation.Autowired;
public class TestBean13 {
private String message;
@Autowired //setter方法注入
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
Java代码
1. package cn.javass.spring.chapter12;
2. //省略import
3. public class TestBean14 {
4. private String message;
5. private List
6. @Autowired(required = true) //任意一个或多个参数方法注入
8. this.message = message;
9. this.list = list;
10. }
11. //省略getter和setter
12. }
package cn.javass.spring.chapter12;
//省略import
public class TestBean14 {
private String message;
private List
@Autowired(required = true) //任意一个或多个参数方法注入
private void initMessage(String message, ArrayList
this.message = message;
this.list = list;
}
//省略getter和setter
}
2、在Spring配置文件(chapter12/dependecyInjectWithAnnotation.xml)添加如下Bean配置:
Java代码
1.
2.
3.
4.
5.
9.
10.
3、测试方法如下:
Java代码
1. @Test
2. public void testAutowiredForMethod() {
3. TestBean13 testBean13 = ctx.getBean("testBean13", TestBean13.class);
4. Assert.assertEquals("hello", testBean13.getMessage());
5.
6. TestBean14 testBean14 = ctx.getBean("testBean14", TestBean14.class);
7. Assert.assertEquals("hello", testBean14.getMessage());
8. Assert.assertEquals(ctx.getBean("list", List.class), testBean14.getList());
9. }
10.
@Test
public void testAutowiredForMethod() {
TestBean13 testBean13 = ctx.getBean("testBean13", TestBean13.class);
Assert.assertEquals("hello", testBean13.getMessage());
TestBean14 testBean14 = ctx.getBean("testBean14", TestBean14.class);
Assert.assertEquals("hello", testBean14.getMessage());
Assert.assertEquals(ctx.getBean("list", List.class), testBean14.getList());
}
方法参数注入除了支持setter方法注入,还支持1个或多个参数的普通方法注入,在基于XML配置中不支持1个或多个参数的普通方法注入