Spring框架学习(二)IOC注入之set/get方法

  action层需要调用service层对象,service层又需要调用dao层的对象。一般情况而言就直接newXXX()使用就可以了,但 是这种方法会使程序的耦合性太强。当Action类中需要更换service方法时,就需要改动源代码。Spring框架就用IOC注入的方法帮我们解决 了这个问题。

示例代码(模拟WEB环境下):

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- id是为class命名的key class是一个对象的地址。 -->
    <bean id="dao" class="com.wzh.dao.CashierDao"></bean>

    <bean id="service" class="com.wzh.service.CashierService">
        <!-- name是需要注入的变量名    ref是需要引用的对象 -->
        <property name="cashierDao" ref="dao"></property>
    </bean>
    <bean id="action" class="com.wzh.action.CashierAction" scope="prototype">
        <property name="cashierService" ref="service"></property>
    </bean>
</beans>

action层:

public class CashierAction {
    //Action依赖Service
    private CashierService cashierService = new CashierService();

    public CashierAction(){

        System.out.println("正在创建CashierAction对象" + this.hashCode());
    }

    public String action(){

        getCashierService().service();
        System.out.println("正在调用CashierAction.action方法");
        return null;
    }

    public CashierService getCashierService() {
        return cashierService;
    }

    public void setCashierService(CashierService cashierService) {
        this.cashierService = cashierService;
    }
}

service层:

public class CashierService {
    //依赖调用dao层
    private CashierDao cashierDao = null;

    public CashierService(){
        getCashierDao().save();
        System.out.println("正在创建CashierService对象"+this.hashCode());
    }

    public void service(){
        System.out.println("调用CashierService.service方法");
    }

    public CashierDao getCashierDao() {
        return cashierDao;
    }

    public void setCashierDao(CashierDao cashierDao) {
        this.cashierDao = cashierDao;
    }
}

dao层:

public class CashierDao {

    public CashierDao(){
        System.out.println("正在创建CashierDao对象"+this.hashCode());
    }
    public void save(){
        System.out.println("调用了CashierDao.save()方法");
    }
}

测试:

public class Test {

    public static void main(String[] args) {

        CashierAction cashierAction = new CashierAction();
        cashierAction.action();

    }
}

结果:

时间: 2024-10-13 20:04:45

Spring框架学习(二)IOC注入之set/get方法的相关文章

Spring框架学习之IOC(二)

Spring框架学习之IOC(二) 接着昨天的内容,下面开始IOC基于注解装配相关的内容 在 classpath 中扫描组件 <context:component-scan> 特定组件包括: –@Component: 基本注解, 标识了一个受 Spring 管理的组件 –@Respository: 标识持久层组件 –@Service: 标识服务层(业务层)组件 –@Controller: 标识表现层组件 对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写.

Spring框架学习之IOC(一)

Spring框架学习之IOC 先前粗浅地学过Spring框架,但当时忙于考试及后期实习未将其记录,于是趁着最近还有几天的空闲时间,将其稍微整理一下,以备后期查看. Spring相关知识 spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器.可单独使用,通常也与其他框架整合使用,例如SSH.SSM. IOC:控制反转 控制权由对象本身转向容器:由容器根据配置文件去创建实例并创建各个实例之间的依赖关系.等同于DI依赖注入 A

spring框架学习之依赖注入(二)

spring提供了三种注入方式,分别是set注入.构造方法注入.接口注入.主要应用前两种. 一.set注入 1)给普通字符类型赋值. public class User{ private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username  = username; } } 我们只需要提供属性的set方法,

Spring入门学习(二)三种实例化bean的方法

前面的哪一种就是通过构造函数来实例化对象 下面我们可能用到工厂方法来视力话对象,这样我们的配置文件又该怎么配置呢 <bean name="service2" class="com.factory.ServiceFactory" factory-method="getService"></bean> 1 package com.factory; 2 3 import com.service.Service; 4 import

Spring框架学习总结(上)

目录 1.Spring的概述 2.Spring的入门(IOC) 3.Spring的工厂类 4.Spring的配置 5.Spring的属性注入 6.Spring的分模块开发的配置 @ 1.Spring的概述 在学习SSM框架中,我建议初学者最好先学Spring框架,其次mybatis接着springMVC,先学mybatis当然也是可以的,今天我们就以绝对优雅的姿态闯进Spring世界,系好安全带,准备好了吗,出发了哦!!!咳咳....平时开发接触最多的估计就是IOC容器,它可以装载bean(所谓

spring框架学习(二)依赖注入

转自:http://blog.csdn.net/lishuangzhe7047/article/details/20740835 ———————————————————————————————————————————— spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入.接口注入不作要求,下面介绍前两种方式. 1,set注入 采用属性的set方法进行初始化,就成为set注入. 1)给普通字符类型赋值. [java] view plaincopyprint? pub

Android Afinal框架学习(二) FinalActivity 一个IOC框架

框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,常用的监听器), 利用set方式注入 完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和set event Listener 这个过程:initInjectedView>findViewById.set

Spring框架学习1

AnonymouL 兴之所至,心之所安;尽其在我,顺其自然 新随笔 管理 Spring框架学习(一) 阅读目录 一. spring概述 核心容器: Spring 上下文: Spring AOP: Spring DAO: Spring ORM: Spring Web 模块: Spring MVC 框架: 二.实例化spring容器 三.利用Spring容器创建javaBean对象 1,用构造器实例化 2,使用静态工厂方法实例化 3,实例工厂实例化 四,容器的IOC应用 4.1)Set注入 4.2)

spring框架学习(一)

转自:http://blog.csdn.net/lishuangzhe7047/article/details/20740209 —————————————————————————————————————————————————— 1,什么是spring框架 spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用. 2,架构概述 1)IoC(Inversi