Spring第一个例子的补充
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第一个例子的补充的更多相关文章
- 菜鸟学习Spring——第一个例子
一.概述 原来我们利用工厂来实现灵活的配置.现在利用Spring以后把这个交给了IoC容器管理.我们只要在XML文件上配上就可以了这样的话就节省了很多开发时间我们不需要知道后面的有多少只要动态的配上类 ...
- Spring MVC介绍和第一个例子
1.Spring mvc概述 spring mvc是spring提供给web应用框架设计,实际上MVC框架是一个设计理念.它不仅存在java世界中而且广泛在于各类语言和开发中,包括web的前端应用.对 ...
- springmvc的介绍和第一个例子
SpringMVC是Spring 框架自带的一部分. SpringMVC底层基于:Servlet Struts2底层基于:filter struts1底层基于:Servlet spring 各模块 我 ...
- Activity工作流(2)-入门安装运行第一个例子
转: Activity工作流(2)-入门安装运行第一个例子 置顶 2017年05月24日 15:58:50 li_ch_ch 阅读数:24432 版权声明:本文为博主原创文章,未经博主允许不得转载 ...
- Springboot环境搭建_第一个例子
首先创建一个maven项目 maven项目创建完成之后,找到pom.xml配置节点.需要springboot-starter-web ,springboot-starter-test,springbo ...
- ElasticSearch 5学习(5)——第一个例子(很实用)
想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...
- MXNet学习~第一个例子~跑MNIST
反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...
- 【Spring】简单的Spring MVC入门例子
前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...
- emberjs学习一(环境和第一个例子)
code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } code, pre t ...
随机推荐
- Jquery-获取勾选的checkbox的同级节点数量
// 获取勾选的标签值得上一个兄弟节点 var groups = []; $('input[name="group_name"]:checked').siblings(" ...
- 转 vi 技巧和诀窍:令人刮目相看的 10 个超酷命令
for ksh vi 编辑器的许多选项可以控制编辑会话的外观和感觉.使用 :set 命令修改 vi 中的会话设置.按 Escape 键进入命令模式之后,可以使用 :set all 命令显示选项和设置的 ...
- Android开机动画启动流程
android开机动画启动流程 从android的Surface Flinger服务启动分析知道,开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的. 下面我 ...
- [转]慎用InputStream的read()方法
InputStream 此抽象类是表示字节输入流的所有类的超类. 我们从输入流中读取数据最常用的方法基本上就是如下 3 个 read() 方法了: 1 . read () 方法,这个方法 从输入流中读 ...
- Jenkins中集成python,支持参数生成Makefile文件
#!/usr/bin/env python import os print os.getenv("BUILD_NUMBER") print os.getenv("uuid ...
- css05 字体以及行间距
<head><meta charset="utf-8"><title>无标题文档</title><style>#box{ ...
- PAT (Advanced Level) 1097. Deduplication on a Linked List (25)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- 模态对话框 bootstrap-modal.js
调用方式 通过data属性 无需编写JavaScript代码即可生成一个对话框.在一个主控元素,例如按钮,上设置data-toggle="modal",然后再设置data-targ ...
- 关于文件读写IDL
1.打开文件 IDL从磁盘上的文件读写数据,必须首先把一盒逻辑设备号连接到一个指定的文件,然后进行文件操作,如打开,关闭和读取等.IDL中的逻辑设备号的范围是-2——128,其中1-99是用户可以任意 ...
- (转)hadoop三个配置文件的参数含义说明
hadoop三个配置文件的参数含义说明 1 获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配 ...