我们在Spring中是这样获取对象的:
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
Lol lol = (Lol) context.getBean("lol");
lol.gank();
}
一起看看Spring如何让它生效呢,在 applicationContext.xml
配置文件中是酱紫的:
<bean id="lol" class="com.biezhi.test.Lol">
<property name="name" value="剑圣" />
</bean>
Lol
类是这样的:
public class Lol {
private String name;
public Lol() {
}
public void gank(){
System.out.println(this.name + "在gank!!");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
上面的代码运行结果自然是 剑圣在gank!!
。
Spring更高级的用法,在3.0版本之后有了基于Annotation的注入实现,为毛每次都要配置 Xml
看到都蛋疼。。
首先还是要在 xml
中配置启用注解方式
<context:annotation-config/>
这样就能使用注解驱动依赖注入了,下面是一个使用场景
public class Lol {
@Autowired
private DuangService duangService ;
public void buyDuang(String name, int money) {
duangService.buy(name, money);
}
}
@Service("duangService")
public class DuangService {
public void buy(String name, int money){
if(money > 0){
System.out.println(name + "买了" + money + "毛钱的特效,装逼成功!");
} else{
System.out.println(name + "没钱还想装逼,真是匪夷所思");
}
}
}
这只是一个简单的例子,剑圣打野的时候想要买5毛钱的三杀特效,嗯。。虽然不符合逻辑
此时 DuangService
已经注入到 Lol
对象中,运行代码的结果(这里是例子,代码不能运行的)就是:
德玛买了5毛钱的特效,装逼成功!
好了,深入的不说了,我们不是学spring的,只是知道一下ioc在spring中高大上的形象,接下来步入正轨,开始设计一个IOC容器