使用构造方法注入和setter注入的配置文件

<?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"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">

    <bean id="test" class="dao.TestDaoImpl" />

    <!-- 将指定类DIServiceImpl配置给spring,让spring创建其实例 -->
    <bean id="myTestDao" class="dao.TestDaoImpl"></bean>
    <!-- 使用构造方法注入 -->
    <bean id="diService" class="service.DIServiceImpl">
        <!-- 将myTestDao注入到DIServiceImpl类的属性ITestDao上 -->
        <constructor-arg index="0" ref="myTestDao" />
    </bean>

    <!-- 使用setter方法的注入 -->
    <bean id="testDIService1" class="service.DIServiceImpl1">
        <!-- 调用DIServiceImpl1类的setter方法,将myTestDao注入到DIServiceImpl1类的属性iTestDao上 -->
        <property name="iTestDao" ref="myTestDao" />
    </bean>

</beans>

构造方法实现类:

package service;
/**
 * IDIService接口的实现类
 *
 * Title: DIServiceImpl
 *
 * Description:
 *
 * @author Ethan
 *
 * @date 2019年6月25日
 *
 */

import dao.ITestDao;

public class DIServiceImpl implements IDIService{
    private ITestDao iTestDao;
    //构造方法,用于实现依赖注入接口对象iTestDao
    public DIServiceImpl(ITestDao iTestDao) {
        super();
        this.iTestDao = iTestDao;
    }
    public void sayHello() {
        //调用iTestDao中的sayHello方法
        iTestDao.sayHello();
        System.out.println("IDIService构造方法注入");
    }

}

setter方式实现类:

package service;

import dao.ITestDao;

public class DIServiceImpl1 implements IDIService{
    private ITestDao iTestDao;
    //添加iTestDao的setter方法,用于实现依赖注入

    public ITestDao getiTestDao() {
        return iTestDao;
    }

    public void setiTestDao(ITestDao iTestDao) {
        this.iTestDao = iTestDao;
    }

    public void sayHello() {
        // TODO Auto-generated method stub
        //调用iTestDao中的sayHello方法
        iTestDao.sayHello();
        System.out.println("TestDaoImpl setter方法注入");
    }

}

测试类:

package test;

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

import service.IDIService;

public class Tests2 {

    /**
     * 构造方法注入测试类
     *
     * Title: Test1
     *
     * Description:
     *
     *
     */
    @Test
    public void Test1() {
        ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml");
        IDIService ts = (IDIService) appCon.getBean("diService");
        ts.sayHello();
    }

    /**
     * 使用setter方式注入测试类
     *
     * Title: Test2
     *
     * Description:
     *
     *
     */
    @Test
    public void Test2() {
        ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml");
        IDIService ts = (IDIService) appCon.getBean("testDIService1");
        ts.sayHello();
    }
}

原文地址:https://www.cnblogs.com/WaterGe/p/11267164.html

时间: 2024-10-04 01:11:31

使用构造方法注入和setter注入的配置文件的相关文章

Bean的构造器注入和setter注入

链接:https://pan.baidu.com/s/1vixLrr8harzZMwLsIB1Mwg 提取码:ou1n 首先要明白,为什么要注入? IOC容器会在初始化时,创建好所有的bean对象的实例(懒汉模式除外:https://www.cnblogs.com/ABKing/p/12044025.html) 这就带来一个问题,当bean中只有方法的时候还不会出问题. 但是如果bean中还有属性呢? 这就是属性注入的出现原因了.为了对bean的属性进行赋值,我们引入了注入的概念 0x00 构造

【Spring】Construcotrer注入和setter注入不同的XML写法方式

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文主要讲解了Spring中constructor注入的4种不同写法和sette的3种不同写法 一.constructor注入4种不同写法 通过构造方法注入,就相当于给构造方法的参数传值set注入的缺点是无法清晰表达哪些属性是必须的,哪些是可选的,构造注入的优势是通过构造强制依赖关系,不可能实例化不完全的或无法使用的bean. 第1种方法:直接传值 <!-- constructor方式注入写

Spring依赖注入的Setter注入(通过get和set方法注入)

导入必要的jar包(Spring.jar和commonslogging.jar) 在src目录下建立applicationContext.xml   (Spring 管理 bean的配置文件) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPEING//DTD BEAN//EN" "http://www.springframewor

依赖注入之setter注入---只需修改配置,电脑就可以安装不同的打印机;读取properties配置文件并创建实例;实现不采用new的方式直接实例化对象

1.项目截图 2.黑白打印机类 package com.example.demo.printer; public class GrayPrinter implements Printer{ @Override public void init() { System.out.println("启动打印机"); } @Override public void print(String txt) { System.out.println("打印黑白文字:".concat(

spring的两种属性注入方式setter注入和构造器注入或者自动注入

1.这里的属性自动注入,与注解配置bean是两回事.这里的自动注入,指的是bean属性的自动注入. bean属性自动注入,包括byNAme和ByType两码事. 2.所有的applicationContext都实现了resourceLoader接口,通过resourceLoader可以获得resource实例,进而可以访问资源文件. 所以要在类中获得resource实例,必须实现applicationContextAware接口.

[Spring实战系列](8)Spring注入方式之setter注入

通常,JavaBean 的属性是私有的,同时拥有一组存取器方法,以setXXX() 和getXXX() 形式存在.Spring 可以借助属性的set方法来配置属性的值,以实现setter方式的注入. 1. 注入简单值 在Spring 中我们可以使用<property> 元素配置Bean 的属性.<property>在许多方面都与<constructor-arg> 类似,只不过一个是通过构造参数来注入值,另一个是通过调用属性的setter 方法来注入值. 举例说明,让我们

Spirng setter 注入简单

1.      提供对应要注入的属性 //setter注入 public class Bean2 { private String name; private Integer age; // 提供要注入的属性对应的setter方法 public void setName(String name) { this.name = name; } public void setAge(Integer age) { this.age = age; } public void show() { System

Spring属性注入、构造方法注入、工厂注入以及注入参数(转)

Spring 是一个开源框架. Spring 为简化企业级应用开发而生(对比EJB2.0来说). 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring 是一个 IOC(DI) 和 AOP 容器框架. 具体描述 Spring:轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API控制反转(依赖注入) (IOC----inverse of control .DI --- dependenc

spring之setter注入

setter注入分为2种 第一:普通属性注入 <bean id="userAction" class="com.xx.action.UserAction"><!--第一种--> <property name="age" value="13"></property><!--第二种--><property name="name"> <