Spring 的属性注入-注解方式
使用@AutoWired 进行自动注入
@AutoWired 默认按照类型进行注入
– 如果存在两个相同 Bean 类型相同,则按照名称注入
@AutoWired 注入时可以针对成员变量或者 set 方法
通过@AutoWired 的 required 属性,设置一定要找到匹配的 Bean
使用@Qualifier 指定注入 Bean 的名称
使用 Qualifier 指定 Bean 名称后,注解 Bean 必须指定相同名称
Spring提供对 JSR-250 中定义@Resource 标准注解的支持
@Resource 和@AutoWired 注解功能相似
代码演示
如果是简单类型的值的话,我们可以直接写上一个注解 value,比如在 UserService 中
public class UserService { @Value("米饭") private String something; public String sayHello(String name){ return "Hello" + name; } public void eat(){ System.out.println("eat:"+something); } }
SpringDemo1 中写一个测试方法
@Test public void demo2(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService) applicationContext.getBean("userService"); userService.eat(); }
运行程序,直接输出了“米饭”,使用注解的方式,都可以直接没有 set,get 方法,当然开发中这种简单属性注入并不多。
新建一个类 UserDao
@Repository("userDao") public class UserDao { public void save(){ System.out.println("DAO 中保存用户..."); } }
UserService 中也写一个保存方法
public void save(){ System.out.println("Service 中保存用户..."); userDao.save(); }
此时需要调用 Dao,这个时候我们就要注入 Dao 了,使用@Autowired 完成注入
public class UserService { @Value("米饭") private String something; @Autowired private String userDao; public String sayHello(String name){ return "Hello" + name; } public void eat(){ System.out.println("eat:"+something); } }
运行程序,Service 和 Dao 中的方法都被调用了