一篇文章教带你了解Java|一篇文章教带你了解Java Spring之自动装配
目录
- 在Spring中有三种装配的方式:
- 1.Bean的自动装配
- 1.1 autowire="byName" 实现自动装配
- 1.2 autowire="byType" 实现自动装配
- 2.注解实现自动装配
- 2.1 配置注解
- 2.2 @Autowired注解
- 2.3 @Resource注解
- 2.4小结
- 3.介绍一个idea中做笔记的小技巧
- 总结
在Spring中有三种装配的方式:
- 在xml中显示的配置
- 在java中显示配置
- 隐式的自动装配bean
1.Bean的自动装配 自动装配是Spring满足bean依赖的一种方式,Spring会在上下文中自动寻找,并自动给bean装配属性。
1.1 autowire="byName" 实现自动装配
byname会自动在容器上下文中查找,和自己对象set方法后面的值对应的bean id。People.java
需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一致。
package org.example; public class People {private Cat cat; private Dog dog; private String name; public Cat getCat() {return cat; }public void setCat(Cat cat) {this.cat = cat; }public Dog getDog() {return dog; }public void setDog(Dog dog) {this.dog = dog; }public String getName() {return name; }public void setName(String name) {this.name = name; }@Overridepublic String toString() {return "People{" +"cat=" + cat +", dog=" + dog +", name='" + name + '\'' +'}'; }}
cat.java
package org.example; public class Cat {public void shut(){System.out.println("喵喵喵……"); }}
Dog.java
package org.example; public class Dog {public void shut(){System.out.println("汪汪汪……"); }}
applicationContext.xml
测试类
package org.example; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App {public static void main( String[] args ) {//获取ApplicationContext对象ApplicationContext application=new ClassPathXmlApplicationContext("ApplicationContext.xml"); //通过ApplicationContext获得TestHello对象//getBean()方法中的参数即为配置文件中Bean的id的值People people=(People) application.getBean("people"); people.getCat().shut(); people.getDog().shut(); }}
1.2 autowire="byType" 实现自动装配
byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean。
需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性的类型一致。
【一篇文章教带你了解Java|一篇文章教带你了解Java Spring之自动装配】
2.注解实现自动装配 JDK1.5支持的注解,Spring2.5就支持注解了。
2.1 配置注解
只需在applicationContext.xml文件中加入
2.2 @Autowired注解
直接在属性上使用即可,也可以在set方式上使用。使用@Autowired 可以不用编写set方法了,前提是你这个自动装配的属性在IOC(Spring)容器中存在,且符合byname。
People.java
package org.example; import org.springframework.beans.factory.annotation.Autowired; public class People {@Autowiredprivate Cat cat; @Autowiredprivate Dog dog; private String name; public Cat getCat() {return cat; }//set方法可以省略public void setCat(Cat cat) {this.cat = cat; }public Dog getDog() {return dog; }public void setDog(Dog dog) {this.dog = dog; }public String getName() {return name; }public void setName(String name) {this.name = name; }@Overridepublic String toString() {return "People{" +"cat=" + cat +", dog=" + dog +", name='" + name + '\'' +'}'; }}
applicationContext.xml
2.3 @Resource注解
People.java
package org.example; import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Resource; public class People {//如果没有(name="cat")那么就会找不到@Resource(name = "cat2")private Cat cat; @Resourceprivate Dog dog; private String name; public Cat getCat() {return cat; }public void setCat(Cat cat) {this.cat = cat; }public Dog getDog() {return dog; }public void setDog(Dog dog) {this.dog = dog; }public String getName() {return name; }public void setName(String name) {this.name = name; }@Overridepublic String toString() {return "People{" +"cat=" + cat +", dog=" + dog +", name='" + name + '\'' +'}'; }}
applicationContext.xml
2.4小结
@Autowired和@Resource的区别:
- 都是用来自动装配的,都可以放在属性字段上
- @Autowired通过byType的方式实现,而且必须要求这个对象存在
- @Resource默认通过byname的方式实现,如果找不到名字,则通过byType实现。如果两个都找不到的情况就会报错。
- 执行顺序不同:@Autowired通过byType; @Resource默认通过byname的方式实现。
3.介绍一个idea中做笔记的小技巧
![一篇文章教带你了解Java|一篇文章教带你了解Java Spring之自动装配](https://img.it610.com/image/info11/c3786551b2284a989619b4449e617fef.jpg)
文章图片
![一篇文章教带你了解Java|一篇文章教带你了解Java Spring之自动装配](https://img.it610.com/image/info11/a07dbc8709aa41788c78bb5f30b47f40.jpg)
文章图片
![一篇文章教带你了解Java|一篇文章教带你了解Java Spring之自动装配](https://img.it610.com/image/info11/db8dd851cf714a5ba01ab022dac8d3db.jpg)
文章图片
总结 本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- 宽容谁
- 一个人的旅行,三亚
- 第6.2章(设置属性)
- 布丽吉特,人生绝对的赢家
- 家乡的那条小河
- 讲述,美丽聪明的海欧!
- PMSJ寻平面设计师之现代(Hyundai)
- 夜游宫|夜游宫 心语
- 增长黑客的海盗法则
- 画画吗()