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 ...
随机推荐
- on-tap和on-click
简单的说,当你点击移动设备屏幕上的一个点之后,on-tap会立刻触发,而on-click(可能)需要等待300ms才触发——这是移动设备浏览器为了检测是否存在双击的一个检测周期长度. 在移动设备上,应 ...
- 转: Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) - Enterprise Edition
http://www.cnblogs.com/xqzt/p/4395053.html Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) - Ent ...
- 1.2 Python基本语法
1.交互模式编程 cmd窗口 =>输入 Python => 输入 print "hello,python!"; ps:如果是新版本Python,需要输 ...
- java 反射的实例
JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 ...
- VHD进阶:差分VHD备份系统
VHD进阶:差分VHD备份系统 一.创建虚拟磁盘 方法1:图形界面创建 1.打开磁盘管理器(运行diskmgmt.msc),在“磁盘管理”上点击右键,“创建VHD”,类型选择VHD,动态扩展或者固定大 ...
- Loadrunner脚本录制注意事项(七)
1.手动走一遍被测业务,达到熟悉理解业务,注意是否和服务器有数据交互,为脚本是否需要关联做准备: 2.浏览器选择IE8/9较好,选择其他浏览器可能会有各种问题.(a.IE设置:内容-设置-去掉所有选项 ...
- 视频录制SurfaceView
package com.bw.videorecorder; import java.io.File;import java.io.IOException; import android.media.M ...
- Python基础学习6---存储器
Python提供一个标准的模块,称为 pickle .使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来.这被称为 持久地 储存对象.还有另一个模块称为 cPickle ...
- Windows API 之 CreateFile、CreateFileMapping 、MapViewOfFile
CreateFile Creates or opens a file or I/O device. The most commonly used I/O devices are as follows: ...
- C#实现http断点下载
我们寄希望于万能的解决方案,但是现实的情况总是很糟糕.在软件编程的世界中,技术分散的情况尤为严重,且不说各种语言拥有的优势不能融合,单就一门语言而言,就拥有众多的技术和相关技术需要学习.网络编程就是这 ...