1.首先导入需要的包:

2.文件结构:

3.先看xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" " http://www.springframework.org/dtd/spring-beans-2.0.dtd ">
<beans>
<!-- 让Spring来管理对象的创建和依赖关系,必须在Spring配置文件中定义 -->
<!-- 配置需要被Spring管理的bean(创建,创建后放在了Spring IOC容器里面) -->
<bean name="hello" class="com.wangcf.HelloWorld">
<!-- 配置该bean需要注入的属性(是通过set方法来注入的) -->
<property name="name" value="direct"/>
</bean> <bean name="userDao" class="com.wangcf.Dao.UserDao"></bean>
<bean name="userManager" class="com.wangcf.UserManager">
<!-- 注入Dao的值,value是注入常量值,ref注入引用值 -->
<property name="userDao" ref="userDao"></property>
</bean>
</beans>

4.1看HelloWorld部分:

package com.wangcf;

public class HelloWorld {
private String name; public HelloWorld(){
System.out.println("HelloWorld 构造器开始创建。。。");
}
public void setName(String name) {
System.out.println("setName..把name的值注入....");
this.name = name;
} public void show(){
System.out.println("HolloWorld show..."+name);
} }
package com.wangcf.Test;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.wangcf.HelloWorld; import junit.framework.TestCase; public class HolloWorldTest extends TestCase{
public void test1(){
//获取Spring的applicationContext配置文件,注入IOC容器中
BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
/**完成上面的步骤,就会打印:
*HelloWorld 构造器开始创建。。。
*setName..
*说明一开始就把类的属性,注入了
**/
//通过BeanFactory的getBean方法,从IOC容器里面获取Bean
Object obj=factory.getBean("hello");
System.out.println(obj.getClass().getName());
HelloWorld hw=(HelloWorld) obj;
System.out.println(hw);
hw.show();
//通过BeanFactory的getBean方法,从IOC容器里面获取Bean
HelloWorld hw2=(HelloWorld) factory.getBean("hello");
System.out.println(hw2);
}
}

打印:

由此可见,在执行

 BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");

的时候,就把配置文件里面的东西执行了。

5.1看UserManager部分:

package com.wangcf;

import com.wangcf.Dao.UserDao;

public class UserManager {

    private UserDao userDao;
//通过set方法注入Dao,这里注入的不是常量值,而是引用值
public void setUserDao(UserDao userDao) {
System.out.println("UserManager UserDao setUserDao..把Dao注入到UserManager容器");
this.userDao = userDao;
} public void addUser(){
System.out.println("UserManager addUser");
userDao.addUser();
} public UserManager(){
System.out.println("UserManager 开始创建....");
}
}
package com.wangcf.Dao;

public class UserDao {
public void addUser(){
System.out.println("UserDao addUser");
} public UserDao(){
System.out.println("UserDao开始创建.....");
}
}
package com.wangcf.Test;

import junit.framework.TestCase;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.wangcf.UserManager; public class UserManagerTest extends TestCase{ public void testAddUser(){
BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
UserManager userManager=(UserManager) factory.getBean("userManager");
System.out.println("------------");
userManager.addUser();
}
}

打印

总结:


UserManager类和HelloWorld类的属性都是通过依赖注入的。

对象的实例化是依赖注入的,就不用每次new 一个?

Spring第一个例子的补充的更多相关文章

  1. 菜鸟学习Spring——第一个例子

    一.概述 原来我们利用工厂来实现灵活的配置.现在利用Spring以后把这个交给了IoC容器管理.我们只要在XML文件上配上就可以了这样的话就节省了很多开发时间我们不需要知道后面的有多少只要动态的配上类 ...

  2. Spring MVC介绍和第一个例子

    1.Spring mvc概述 spring mvc是spring提供给web应用框架设计,实际上MVC框架是一个设计理念.它不仅存在java世界中而且广泛在于各类语言和开发中,包括web的前端应用.对 ...

  3. springmvc的介绍和第一个例子

    SpringMVC是Spring 框架自带的一部分. SpringMVC底层基于:Servlet Struts2底层基于:filter struts1底层基于:Servlet spring 各模块 我 ...

  4. Activity工作流(2)-入门安装运行第一个例子

    转: Activity工作流(2)-入门安装运行第一个例子 置顶 2017年05月24日 15:58:50 li_ch_ch 阅读数:24432   版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  5. Springboot环境搭建_第一个例子

    首先创建一个maven项目 maven项目创建完成之后,找到pom.xml配置节点.需要springboot-starter-web ,springboot-starter-test,springbo ...

  6. ElasticSearch 5学习(5)——第一个例子(很实用)

    想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...

  7. MXNet学习~第一个例子~跑MNIST

    反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...

  8. 【Spring】简单的Spring MVC入门例子

    前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...

  9. emberjs学习一(环境和第一个例子)

    code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } code, pre t ...

随机推荐

  1. Linux 配置tomcat遇见的若干问题

    1.提示catalina.sh缺失 原因:未对bin目录下的.sh文件授权 执行:chmod +x bin/*.sh即可 2.正常启动Tomcat 但是外界无法访问 Linux防火墙原因,进入到 et ...

  2. PID控制学习笔记(二)

    不管是基本的PID控制还是变形的PID控制算法,其核心都是对输入信号(设定值信号.测量信号或者偏差信号等)做基本的比例.积分.微分运算,最终提供给被控过程良好的调节信号. 在过程控制仪表,特别是在数字 ...

  3. HDU2579--Dating with girls(2)--(DFS, 判重)

    Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  4. 旋转关节(Revolute Joint)

    package{ import Box2D.Common.Math.b2Vec2; import Box2D.Dynamics.b2Body; import Box2D.Dynamics.Joints ...

  5. 篇一:eclipse创建maven工程

    一.概览 maven创建的项目主要分为三类:war(网页工程).jar(Java工程).pom(父工程); war:网页工程,包含webapp,用于view层 jar:Java工程,用于提供方法.se ...

  6. MySQL查询order by相减select相减的Sql语句

    先看一张表 create_time是订单创建时间,pay_time是支付时间 现在我想按照订单完成耗时的时间进行排序,并且取出来的数据中直接算好了差值,怎么用Sql呢,请看 select id,tid ...

  7. CF 299 div2 C 博弈

    http://codeforces.com/contest/299/problem/C 题目大意: 给两个0,1串保证长度都是2*n(偶数),问,Yaroslav, Andrey按照顺序取,首先是ya ...

  8. ubuntu系统使用SSH免密码登陆

    ubuntu系统使用SSH免密码登陆 | 浏览:5160 | 更新:2014-02-13 19:15 1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 我们通常使用U ...

  9. select, poll, epoll

    select的一 个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024 http://www.cnblogs.com/bigwangdi/p/3182958.html ...

  10. android zip解压缩

    android  zip解压缩 public class ZipUtils { public ZipUtils() { } /* 以输入流的形式解压 */ public static void UnZ ...