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 ...
随机推荐
- wlcore: firmware chunk too long
insmod wlcore_sdio.ko 的时候出现的错误 43.767890] Powering on wl12xx [ 143.846003] Powering off wl12xx [ 1 ...
- ionic中 .col : 默认的定宽列
.col : 默认的定宽列 在ionic的栅格中,每一行的各列默认是等宽的,这使得实现一个图片 浏览界面非常简单.下图是instagram app的截图: instagram <!DOCTYPE ...
- Tinyxml封装类COperatorXml
OperatorXml.h头文件 #ifndef _OPERATOR_XML_H_ #define _OPERATOR_XML_H_ #include <string> class TiX ...
- 【语法】修饰符 static extern const
转载自:http://my.oschina.net/u/2560887/blog/552683 一.C语言中的static的作用 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有 ...
- Android中布局文件中使用onClick属性
安卓开发中,布局文件中的控件有一个属性,是onClick,例如: <Button android:id="@+id/button1" ...
- final关键字修饰的变量
final意义:最终的,不可改变的. 1.修饰变量,为常量,值不可变: 2.修饰对象,值可变,引用不变: 3.修饰方法,方法不可重写: 4.修饰类,无子类,不可以被继承,更不可能被重写. 1.fina ...
- 编译Android各种错误
第一次编译成功,第二次出现Value for 'keystore' is not valid. It must resolve to a single path 打开proj.android\ant. ...
- ONES 安装、配置以及初始化配置
环境依赖 bower composer php 5.5.9+ mysql 5.6.5+ PHP和MySQL版本均为最低要求版本,安装前请先确认. 通过CLI安装 $ git clone http:// ...
- java工程开发之图形化界面之(第一课)
下面我们先上代码: package 一个事例图形小应用程序; import javax.swing.JApplet; import java.awt.Graphics; public class 绘制 ...
- Android Studio的使用(十三)--设置方法分割线
1.只需要在设置中选中show method separators 即可.