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 ...
随机推荐
- 编译在android 平台上跑的C应用程序
Android 用的是 Bionic C, 而不是通常的glibc,因此简单使用交叉工具链并不能够编译出适合运行在android 设备上的 C/C++ 程序. 交叉工具链可以很轻松在 Android ...
- ENC28j60以太网芯片驱动程序简介
ENC28j60以太网芯片驱动程序简介 ENC28J60 驱动开发要点 enc28J60 和 Arduino (1)——ping通你的Arduino MCU51单片机uIP协议栈+ENC28J60网卡 ...
- 转 Problem: AnyConnect was not able to establish a connection to the specified secu
不多说直接上问题,在点击连接时,也是能正常连接上输入密码,在输出用户名密码后 连接后,会出现: problem:anyconnect was net able to establish a conne ...
- Parade
Parade time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- Firebase 相关
谷歌在 2016年 I/O 大会上推出了 Firebase 的新版本.Firebase 平台提供了为移动端(iOS和Android)和 Web 端创建后端架构的完整解决方案. 从一开始的移动后端即服务 ...
- Windows下将ImageMagick移植到Android平台
Windows下将ImageMagick移植到Android平台 原文链接 http://www.pedant.cn/2014/06/18/imagemagick-ported-android/ I ...
- nagios总结
主要功能 网络服务监控(SMTP.POP3.HTTP.NNTP.ICMP.SNMP.FTP.SSH) 主机资源监控(CPU load.disk usage.system logs),也包括Window ...
- ubuntu下安装nagios
第一步安装apache root@root01-virtual-machine:/etc/apache2/conf-available# vi charset.conf 可修改apache服务器的编码 ...
- Listview的OnScrollListener的滑动监听实现分页加载
//---------------主布局文件---------------------------- <ListView android:layout_width="fill_pare ...
- sql 按时间二段排序
业务需用为数据按倒序排序,当天数据排在以往日期前面,但当天数据需按小时进行升序排列 select *from( select vcTitle,dtBeginDate,case when dtBegin ...