更加简单地从Spring中取出Bean对象(超级重要)
将Bean对象更加简单地从Spring中取出来,有三种方式,分别为 属性注入, setter注入,构造方法注入
我们可以回忆一下之前是怎么拿到一个对象的.
最初我们在没有学Spring之前就是直接new一个对象
学了Spring之后呢... 我们先要创建一个Spring上下文对象(context),通过context.getBean()方法指定id,类型来从Spring中取出Bean对象..
到现在我们就可以使用更加简单地方式来从Spring中取出Bean对象了.
我们分别来讲一下属性注入,Setter注入,构造方法注入 并分析出三种方式的优缺点,以及Spring官方推荐我们使用哪种呢 ?
为什么要使用依赖注入
传统的代码,每个对象负责管理与自己需要依赖的对象,导致如果需要切换依赖对象的实现类时,需要修改多处地方。同时,过度耦合也使得对象难以进行单元测试。
依赖注入把对象的创造交给外部去管理,很好的解决了代码紧耦合(tight couple)的问题,是一种让代码实现松耦合(loose couple)的机制。
松耦合让代码更具灵活性,能更好地应对需求变动,以及方便单元测试。
为什么要使用Spring
使用Spring框架主要是为了简化Java开发(大多数框架都是为了简化开发),它帮我们封装好了很多完善的功能,而且Spring的生态圈也非常庞大。
基于XML的配置是Spring提供的最原始的依赖注入配置方式,从Spring诞生之时就有了,功能也是最完善的.
属性注入
首先我来代码演示一下怎么才是属性注入,代码层次上是怎么写的呢..
我们这里代码演示是 我们在UserController类里面要使用UserService类....
//和前端进行交互的第一层(主要验证前端传递过来的参数-->进行校验和验证==>相当于安检的作用)
@Controller
public class UserController {
//我们这里假设要在UserController类里面使用UserService,前提是UserService已经存放到Spring中了(加了类注解了)
@Autowired //使用一个AutoWired这样的一个注解---->自动装配的意思
private UserService userService;//UserService成员属性
public void sayHello(){
System.out.println("do UserController!!!");
userService.doUserService();//调用UserService的方法
}
}