zoukankan      html  css  js  c++  java
  • Spring注入

    Spring注入

     

    重点还是看实例吧

     


    实例:

    有一个InjectionDao的接口,然后InjectionDaoImpl实现了InjectionDao接口,相当于完成了数据库的操作。

    有一个InjectonServer的接口,然后InjectonServerImpl实现了InjectonServer接口,这是服务层的操作。

    下面是设值注入和构造注入:

    我们需要在service层完成逻辑操作,所以service层肯定需要调用dao层来完成数据库的操作。

    所以service层肯定有dao层的对象,而我们说的设值注入,构造注入,就是对这个对象而言的。

    在类中给对象赋值的方式有两种,一种是set方式,一种是构造函数,就对应我们这里所说的设值注入和构造注入。

    所以在service层的时候我们有dao对象的set方法和构造函数。

    但是,这个set方法的调用(设值注入)和构造函数的调用(构造注入)却是通过配置文件来完成的。

    这个配置文件相当于IOC容器的功能,所以运行实例的时候,要先引入容器,也就是先引入XML文件。

    其实,设值注入和构造注入就是XML文件(IOC容器)完成了成员赋值(调用set函数或者构造器)的过程

    IOC方式我们用的对象不是我们自己创建的,也是IOC容器给我们的,我们通过getBean的方式申请对象,如下:

     

    代码:

    spring-injection.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans
     5         http://www.springframework.org/schema/beans/spring-beans.xsd" >
     6         
     7 <!--         <bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl"> -->
     8 <!--             <property name="injectionDAO" ref="injectionDAO"></property> -->
     9 <!--         </bean> -->
    10 
    11         <bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
    12             <constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>
    13         </bean>
    14         
    15         <bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl"></bean>
    16     
    17  </beans>

    InjectionDAO.java

    1 package com.imooc.ioc.injection.dao;
    2 
    3 public interface InjectionDAO {
    4     
    5     public void save(String arg);
    6     
    7 }

    InjectionDAOImpl.java

     1 package com.imooc.ioc.injection.dao;
     2 
     3 public class InjectionDAOImpl implements InjectionDAO {
     4     
     5     public void save(String arg) {
     6         //模拟数据库保存操作
     7         System.out.println("保存数据:" + arg);
     8     }
     9 
    10 }

    InjectionService.java

    1 package com.imooc.ioc.injection.service;
    2 
    3 public interface InjectionService {
    4     
    5     public void save(String arg);
    6     
    7 }

    InjectionServiceImpl.java

     1 package com.imooc.ioc.injection.service;
     2 
     3 import com.imooc.ioc.injection.dao.InjectionDAO;
     4 
     5 
     6 public class InjectionServiceImpl implements InjectionService {
     7     
     8     private InjectionDAO injectionDAO;
     9     
    10     //构造器注入
    11     public InjectionServiceImpl(InjectionDAO injectionDAO1) {
    12         this.injectionDAO = injectionDAO1;
    13     }
    14     
    15     //设值注入
    16     public void setInjectionDAO(InjectionDAO injectionDAO) {
    17         this.injectionDAO = injectionDAO;
    18     }
    19 
    20     public void save(String arg) {
    21         //模拟业务操作
    22         System.out.println("Service接收参数:" + arg);
    23         arg = arg + ":" + this.hashCode();
    24         injectionDAO.save(arg);
    25     }
    26     
    27 }

    TestInjection.java

     1 package com.imooc.test.ioc.interfaces;
     2 
     3 import org.junit.Test;
     4 import org.junit.runner.RunWith;
     5 import org.junit.runners.BlockJUnit4ClassRunner;
     6 
     7 import com.imooc.ioc.injection.service.InjectionService;
     8 import com.imooc.test.base.UnitTestBase;
     9 
    10 @RunWith(BlockJUnit4ClassRunner.class)
    11 public class TestInjection extends UnitTestBase {
    12     
    13     public TestInjection() {
    14         super("classpath:spring-injection.xml");
    15     }
    16     
    17     @Test
    18     public void testSetter() {
    19         InjectionService service = super.getBean("injectionService");
    20         service.save("这是要保存的数据");
    21     }
    22     
    23     @Test
    24     public void testCons() {
    25         InjectionService service = super.getBean("injectionService");
    26         service.save("这是要保存的数据");
    27     }
    28     
    29 }
  • 相关阅读:
    powerdesigner反向MySQL5.1数据库 生成ER图
    Sublime Text 2 使用心得
    MyEclipse老是弹出problem occurred窗口
    Jquery ui Datepicker 的汉化
    jsp 中的getParameter和getAttribute
    jquery easyui
    struts2 annotation方式的下载(实用版)
    Sublime Text 2
    struts2框架搭建的三个步骤
    任意角度的平行四边形的碰撞检测原理
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7777935.html
Copyright © 2011-2022 走看看