Spring最核心的概念就是“依赖注入”。所谓依赖注入就是你需要什么对象,Spring容器就帮你实例化这个对象,然后注入到你的应用程序中。这样你就不用自己实例化依赖对象,不但简化了开发,还解耦了各模块的依赖。下面我来展示一个实例,比如Person对象要使用Computer,必须依赖Computer这个对象。使用Spring,使你不用自己new对象,Spring容器会帮你在需要的时候注入Computer这个对象。在Spring里,任何java对象都可以当做bean。
Person类:
package com.ydoing.demo;
public class Person {
private Computer computer;
public void setComputer(Computer computer) {
this.computer = computer;
}
public void useComputer() {
computer.start();
}
}
Computer类:
package com.ydoing.demo;
public class Computer {
public void start() {
System.out.println("computer run");
}
}
bean的配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="computer" class="com.ydoing.demo.Computer" />
<bean id="person" class="com.ydoing.demo.Person">
<property name="computer" ref="computer" />
</bean>
</beans>
测试类:
package com.ydoing.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
Person person = ctx.getBean("person", Person.class);
person.useComputer();
}
}
console输出:
七月 19, 2015 9:25:05 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@64fe7a67: startup date [Sun Jul 19 09:25:05 CST 2015]
七月 19, 2015 9:25:05 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [beans.xml]
computer run
总结:
从以上程序我们看出,没有出现任何new关键字,person对象需要computer对象时,不需要new。Spring会自动注入computer这个bean到person中。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
spring入门实例
对于初学者的spring入门实例,希望这些代码对你有所帮助
spring入门spring入门spring入门spring入门spring入门spring入门spring入门spring入门
一个Spring的入门实例;一个Struts的入门实例:超初级,入门用的,高手莫看
Spring MVC入门实例
spring菜鸟入门,spring入门,spring新手实例,spring教程
Spring DAO入门实例入门实例DOC,经典入门
这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...
SPRING MVC入门实例,适合入门者
Spring入门实例,里面注释很清楚,用eclipse写的,直接可以导入
SpringSecurity入门教程,完整可运行的实例
Jersey2.13+spring3.2.3入门实例,包含源码及tomcat webapp. 运行环境: myeclipse10.6 tomcat7.0+jdk1.7
Spring AOP 入门实例1
用spring AOP做的最简单的日志记录小例子,特别简单,可直接运行。
spring2-aop入门实例教程 spring2-aop入门实例教程
spring3.0mvc自学教程ppt+注解教程+注解实例+springmybatis教程+项目实例+中文api 初学(自学)着的不二法定,从入门到项目实例深入学习(浅-深)