Spring教程(一)
JavaEE成功入门,谈谈自己的经验,也试着写写博客,本文大多来自Baeldung。本文不定时更新
(本文没有使用任何基于XML的配置,目前开发基本都靠注解了,Spring Boot基本也能帮我们省去各类配置,只要理解概念即可,项目也可以直接使用
Spring Initializr生成,关于我对开发环境于习惯的建议于观点,请移步#)
依赖注入
依赖注入是指对一个对象的依赖进行注入的过程。通过依赖注入,使组件低耦合,将对组件的管理转移给框架
控制反转
指对象的控制权被转移给容器或框架。
那么,什么是依赖呢:
public class Foo {
private Bar bar;
public Foo() {
bar = new Bar();
}
}
此处Bar为Foo的依赖,此处通过构造器实例化依赖,通过依赖注入,代码可以被改写为:
public class Foo {
private Bar bar;
@Autowired
public Foo(Bar bar) {
this.bar = bar;
}
}
通过一个setter,用框架注入依赖。
基于构造器的依赖注入
当通过构造器进行依赖注入时,框架以对象所需要的依赖为参数调用构造器。
Spring主要通过类型对依赖进行解析。同时也依赖于属性名与各种消歧义选项。
我们来看下面这一代码段段:
@Configuration
public class AppConfig {
@Bean
public Item item1() {
return new ItemImpl1();
}
@Bean
public Store store() {
return new Store(item1());
}
}
@Configuration注解显示这类是Bean定义的来源,在方法上使用@Bean,从而以方法定义一个bean。定义好bean后,则可以使用在构造器上使用@Autowired注解,实现依赖的注入。
public class Foo {
private Bar bar;
@Autowired
public Foo(Bar bar) {
this.bar = bar;
}
}
基于Setter的注入
这种注入方式类似上一种:
public class Foo {
private Bar bar;
@Autowired
public setBar(Bar bar) {
this.bar = bar;
}
}
属性注入
public class Foo {
@Autowired
private Bar bar;
}
下一回,我们将详细解释@Autowired的用法.