Spring课程 Spring入门篇 2-2 Spring注入方式

本节主要讲了以下两块内容:

1    xml两种注入方式

2    注入方式代码实现

3    特别注意

1    xml两种注入方式

构造注入和set注入

2    注入方式代码实现

2.1  set注入方式的实现

实现类

package com.imooc.ioc.injection.service;

import com.imooc.bean.ioc.interfaces.InjectionDao;
import com.imooc.bean.ioc.interfaces.InjectionService;

public class InjectionServiceImpl implements InjectionService {

    private InjectionDao injectionDao;

    //set注入
    public void setInjectionDao(InjectionDao injectionDao) {
        this.injectionDao = injectionDao;
    }

    @Override
    public void save(String sArgs) {
        injectionDao.save(sArgs);
        // TODO Auto-generated method stub
        System.out.println("开始保存!!!"+sArgs);
    }

}

注入类

package com.imooc.ioc.injection.service;

import com.imooc.bean.ioc.interfaces.InjectionDao;

public class InjectionDaoImpl implements InjectionDao{

    @Override
    public void save(String args) {
        // TODO Auto-generated method stub
        System.out.println("导层保存参数"+args);
    }

}

spring-injection.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="init" default-destroy-method="destroy">

<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<property name="injectionDao" ref="injectionDao"/>
</bean> 

<bean id="injectionDao" class="com.imooc.ioc.injection.service.InjectionDaoImpl"></bean> 

</beans>

测试类:

package com.imooc.test.ioc.interfaces;

import org.junit.Test;

import com.imooc.bean.ioc.interfaces.InjectionService;
import com.imooc.test.base.UnitTestBase;

public class TestInjectionService extends UnitTestBase{

    public TestInjectionService() {
        super("classpath*:spring-injection.xml");
        // TODO Auto-generated constructor stub
    }

    @Test
    public void testInjectionService(){
        //得到当前对象
        InjectionService iService = super.getbean("injectionService");
        iService.save("12345");
    }

}

2.2  构造注入方式的实现

实现类

package com.imooc.ioc.injection.service;

import com.imooc.bean.ioc.interfaces.InjectionDao;
import com.imooc.bean.ioc.interfaces.InjectionService;

public class InjectionServiceImpl implements InjectionService {

    private InjectionDao injectionDao;

    /*//set注入
    public void setInjectionDao(InjectionDao injectionDao) {
        this.injectionDao = injectionDao;
    }*/

    //构造器注入
    //注意:这里要有 this.injectionDao = injectionDao;
    public InjectionServiceImpl(InjectionDao injectionDao) {
        // TODO Auto-generated constructor stub
        this.injectionDao = injectionDao;
    }

    @Override
    public void save(String sArgs) {
        injectionDao.save(sArgs);
        // TODO Auto-generated method stub
        System.out.println("开始保存!!!"+sArgs);
    }

}

注入类:(同上)

spring-injection.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="init" default-destroy-method="destroy">

<!-- <bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<property name="injectionDao" ref="injectionDao"/>
</bean>  -->

<!-- 注意:这里是ref -->
<bean id = "injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<constructor-arg name="injectionDao" ref="injectionDao"></constructor-arg>
</bean>

<bean id="injectionDao" class="com.imooc.ioc.injection.service.InjectionDaoImpl"></bean> 

</beans>

测试类:

package com.imooc.test.ioc.interfaces;

import org.junit.Test;

import com.imooc.bean.ioc.interfaces.InjectionService;
import com.imooc.test.base.UnitTestBase;

public class TestInjectionService extends UnitTestBase{

    public TestInjectionService() {
        super("classpath*:spring-injection.xml");
        // TODO Auto-generated constructor stub
    }

    @Test
    public void testInjectionService(){
        //得到当前对象
        InjectionService iService = super.getbean("injectionService");
        iService.save("12345");
    }

    @Test
    public void testInjectionServiceConstruct(){
        //得到当前对象
        try {
            InjectionService iService = super.getbean("injectionService");
            iService.save("12346");
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

    }

}

3    特别注意

xml配置的name,实现类中的变量,必须保证完全一致,否则,系统报错,找不到指定的方法。

原文地址:https://www.cnblogs.com/1446358788-qq/p/10421538.html

时间: 2024-10-11 21:58:12

Spring课程 Spring入门篇 2-2 Spring注入方式的相关文章

SVG矢量图形课程基础入门篇

SVG矢量图形基础入门(一) SVG完整名称是Scalable Vector Graphics,基于XML的互联网图形标准,本课程将介绍SVG的基本相关使用 课程链接:http://www.gbtags.com/gb/gbliblist/66.htm SVG矢量图形基础入门(二) SVG完整名称是Scalable Vector Graphics,基于XML的互联网图形标准,本课程将介绍SVG的基本相关使用 课程链接:http://www.gbtags.com/gb/gbliblist/76.ht

spring List,Set,Map,Properties,array的配置文件注入方式

虽然不多,但是有时候在实现的时候,我们还是希望某些参数或者属性通过集合()的方式注入进来,比如配置表参数列表,addresslist,亦或是三方库等等.因为这种改动不是很多,经常一时想不起来,今天做个类通用业务AOP的时候用到,顺便记录下:     <bean id="CustomerBean" class="com.mkyong.common.Customer">         <!-- java.util.List -->       

《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系

之前我们都是使用配置文件的方式来生成的代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件.还是有点麻烦. 所以,这一篇,我们来说说使用注解的方式来在接在实体类上配置映射关系. 第一步:新建一个项目,或者把之前项目中的实体类.映射文件,还有hibernate中的mapping标签都删除,然后在DBBrowser中再次生成实体类.如下图: 红框中的选项就表示直接在POJO上以注解的方式加上映射关系.注意括号内的hibernate版本,必须是3.2及以上的才行. 生成后的实

构建微服务:Spring boot 入门篇

构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适). 使用spring boot有什

Spring Boot干货系列:(一)优雅的入门篇

Spring Boot干货系列:(一)优雅的入门篇http://www.cnblogs.com/zheting/p/6707032.html  全篇参考:http://www.cnblogs.com/zheting/category/966890.html 前言 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备.   正文 首先声明,Spring Boot不是一门新技术,所以不用紧张.从本质上来说,

spring 入门篇

spring 入门篇 相对于Hibernate(冬眠),Spring(春天),具有更多的诗意与希望的感觉,是为了解决传统J2EE开发效率过低.开发商之间不统一.没有真正实现“写一次到处使用”,它的优点有如下: 低侵入式设计,代码污染极低. 独立于各种应用服务,真正实现写一次到处都可以使用. 用户可选择的自由度高,用户可以选择部分或者是全部SPRING的功能,它并不是设计来取代其它框架,可以和其它的框架(如STRUTS.HIBERNATE)等结合极好. 面向接口的编程方式,使得代码的偶合度降到最低

Spring Boot 2.0 WebFlux 教程 (一) | 入门篇

目录 一.什么是 Spring WebFlux 二.WebFlux 的优势&性能 三.WebFlux 应用场景 四.适用性 五.快速入门 5.1 添加 webflux 依赖 5.2 定义接口 5.3 测试接口 六.总结 七.GitHub 示例代码 一.什么是 Spring WebFlux 下图截自 Spring Boot 官方网站: 结合上图,在了解 Spring WebFlux 之前,我们先来对比说说什么是 Spring MVC,这更有益我们去理解 WebFlux,图右边对 Spring MV

Spring Boot 2.X(一):入门篇

什么是 Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架遵循"约定优于配置"的思想,清除了原先使用Spring框架的那些样板化的配置,继承了原有Spring框架的优秀基因,从而帮助开发者快速开发应用. SpringBoot的特性 总的来说就是简单.快速.方便. SpringBoot的核心模块 创建SpringBoot项目 本文使用开发工具为eclipse 官网Maven构建

Spring Security安全框架入门篇

一.Spring Security相关概念 1.1..Spring Security介绍: Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全訪问控制解决方式的安全框架(简单说是对訪问权限进行控制嘛).它提供了一组能够在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能.为应用系统提供声明式的安

spring入门篇2 --- IOC设计思想

在上一篇中已经大致了解了IOC的设计思想,IOC全拼是Inversion of Control,就是控制反转,以前我们都是自己创建对象,进行实例化,现在交给框架spring来进行控制,以实现高度的解耦. IOC是设计思想,是Spring的核心,我们必须要掌握,因此通过几个例子,来看看到底是如何实现的,这样就可以有更清晰的认知,所有的demo源码放在了github上,后续学习过程会进行持续的更新,以后不再赘述. 学习这个之前,我们需要了解一下什么是DI,Dependency Injection,依