Spring学习之路三——第一个Spring程序(体会IoC)

体会IoC:Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

步骤如下:

1.建立web功能

2.导入jar包

3.配置applicationContext.xml

4.创建类

5.测试

具体代码如下

  UserDao.java 

1 package cn.itcast.ioc;
2
3 public interface UserDao {
4
5     public void save();
6 }

  UserDaoImpl.java

package cn.itcast.ioc;

public class UserDaoImpl implements UserDao{

    public void save(){

        System.out.println("spring:hello user dao");
    }
}

  applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Spring的约束配置 -->
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd ">

    <!-- 将指定对象配置给Spring,让spring创建其实例 -->
    <!-- 在spring容器中创建一个id为userDao的bean实例 -->
    <bean id="userDao" class="cn.itcast.ioc.UserDaoImpl"></bean>

</beans>

  TestIoC.java

package cn.itcast.ioc;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestIoC{

    @SuppressWarnings("resource")
    @Test
    public void testDemo1(){

        //1.定义配置文件路径(此处代表在类路径中)
        String xmlPath = "applicationContext.xml";
        //2.初始化Spring容器,加载配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        //3.通过容器获取useDao实例
        UserDao userDao = (UserDao)applicationContext.getBean("userDao");
        //4.调用userDao的save()方法
        userDao.save();

    }
}

  

时间: 2025-01-02 09:18:09

Spring学习之路三——第一个Spring程序(体会IoC)的相关文章

Spring学习之路(一)spring属性注入

1.编写类 public class Bean3 { private String userName; //toString()下面的一个方法 public Bean3(String userName) { this.userName = userName; } public void text(){ System.out.println("bean3-----------" + userName); } } 2.配置文件 <!-- 属性注入 --> <bean id

Spring学习之路(一)spring入门

1.引入jar包 spring核心jar包 spring-beans-4.3.2.RELEASE.jar spring-core-4.3.2.RELEASE.jar spring-context-4.3.2.RELEASE.jar spring-expression-4.3.2.RELEASE.jar spring日志jar包 log4j-1.2.17.jar commons-logging-1.1.3.jar spring注解jar包 spring-aop-4.3.2.RELEASE.jar

Spring学习之路(四)spring对数据库操作

1.导入jdbc.jar.tx. jar包 2.测试 package com.junit; import static org.junit.Assert.*; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.sprin

Spring学习笔记(三)

Spring学习笔记(三) AOP 一.使用Annotation方式实现AOP.步骤: xml里加入配置:<aop:aspectj-autoproxy /> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org

spring学习5:基于注解实现spring的aop

目录 spring学习5:基于注解实现spring的aop 一.基于注解+xml实现 1.1 在配置文件中开启spring对注解aop的支持 1.2 把通知类用注解配置到容器中,并用注解声明为切面 1.3 定义切入点表达式 1.4 定义通知 二.基于纯注解实现 三.多个aop的执行顺序 1.xml配置 2.注解配置 3.注意 spring学习5:基于注解实现spring的aop 上一节学习了spring aop的基本概念和如何基于xml配置来实现aop功能.这一节来学习下如何用注解实现aop 一

Jquery学习之路(三) 实现弹出层插件

弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 要弹出层,先要用一个遮罩层挡在下面的页面,此遮罩层是全屏的,页面滚动也要有,所以设置 position: fixed;还要有透明效果,下面是我定义的遮罩层css,取名mask .mask { position: fixed; width: 100%; height: 100%; backgroun

Spring学习随笔(2):Eclipse下Spring环境配置+入门项目

1 准备工作 (按需下载) Eclipse 下载:http://www.eclipse.org/downloads/eclipse-packages/ : Spring 下载:http://repo.spring.io/libs-release-local/org/springframework/spring/  版本自选: Spring aop另需的3个包:http://download.csdn.net/download/lk_lxn/6397895 2 Spring IDE help->E

struts2学习笔记(三)—— 在用户注册程序中使用验证框架

实现目标: 1.使用验证框架对用户注册信息进行验证 2.验证用户名.密码.邮箱不能为空 3.验证用户名.密码长度 4.验证邮件地址格式 具体实现 一.Struts2应用的基础配置 这里不做详细阐述,具体为web.xml.相关jar包的配置 二.将页面显示的文本内容放到资源文件中 1.查看用户注册程序中的所有页面,找到所有可以显示的文本内容,将它们分离出来放到资源文件中. 2.与相关的Action类同名,以.preperties为扩展名,与Action类位于同一个包中,只能由该Action访问 R

汇编入门学习笔记 (三) —— 第一个程序

疯狂的暑假学习之  汇编入门学习笔记 (三)-- 第一个程序 参考:<汇编语言> 王爽  第四章 1.一个源程序从写到执行的过程 第一步:编写汇编源程序 第二步:对源程序进行编译连接 第三步:在操作系统中执行 2.源程序 代码: assume cs:first first segment start: mov ax,2 add ax,ax add ax,ax mov ax,4C00H int 21H first ends end start 代码解释: assume .segment.ends