美文网首页
Sring 依赖注入

Sring 依赖注入

作者: shpunishment | 来源:发表于2018-08-21 19:54 被阅读0次

Spring 注入有构造注入和设值注入。
常用设置注入。

package com.shpun.dao 包下

BaseDao

package com.shpun.dao;
public interface BaseDao {
    void connectSql();
    void closeSql();
}

BaseDaoImpl

package com.shpun.dao;
public class BaseDaoImpl implements BaseDao {
    
    @Override
    public void connectSql() {
        System.out.println("connect mysql");
    }

    @Override
    public void closeSql() {
        System.out.println("close mysql");
    }
}

CustomerDao

package com.shpun.dao;
public interface CustomerDao {
    void queryAllCustomers();
}

CustomerDaoImpl

package com.shpun.dao;
public class CustomerDaoImpl implements CustomerDao {

    private BaseDao baseDao;

    // 设值注入
    public void setBaseDao(BaseDao baseDao) {
        this.baseDao = baseDao;
    }

    @Override
    public void queryAllCustomers() {
        baseDao.connectSql();
        System.out.println("queryAllCustomers success");
        baseDao.closeSql();
    }
}

package com.shpun.service 下

ActivityService

package com.shpun.service;
public interface ActivityService {
    void joinActivity();
}

ActivityServiceImpl

package com.shpun.service;
public class ActivityServiceImpl implements ActivityService {

    private CustomerDao customerDao;

    // 构造注入
    public ActivityServiceImpl(CustomerDao customerDao){
        this.customerDao = customerDao;
    }

    @Override
    public void joinActivity() {
        System.out.println("查询愿意活动客户 : ");
        customerDao.queryAllCustomers();
        System.out.println("以上客户参加活动");
    }

    public static void main(String[] args){

        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-config.xml");

        ActivityServiceImpl activityServiceImpl = context.getBean("activityServiceImpl",ActivityServiceImpl.class);
        activityServiceImpl.joinActivity();
    }
}

spring-config.xml

    <bean id="baseDaoImpl" class="com.shpun.dao.BaseDaoImpl"/>
    <bean id="customerDaoImpl" class="com.shpun.dao.CustomerDaoImpl">
        <!-- CustomerDaoImpl中依赖BaseDaoImpl,使用标签property进行设值注入 
          name要和CustomerDaoImpl中要一致 ref为要注入的Bean
        -->
        <property name="baseDao" ref="baseDaoImpl"/>
    </bean>
    <bean id="activityServiceImpl" class="com.shpun.service.ActivityServiceImpl">
    <!-- ActivityServiceImpl依赖CustomerDaoImpl,进行构造注入 -->        
        <constructor-arg name="customerDao" ref="customerDaoImpl"/>
    </bean>

显示结果

查询愿意活动客户 : 
connect mysql
queryAllCustomers success
close mysql
以上客户参加活动

若A类需要依赖其他类B,C,D,则在类A内实现B,C,D的set方法,在配置文件中加property,进行设值注入;或在构造器中进行构造注入。

要使用注解的方式,需要在配置文件加上:

<!--
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"
-->
        
<!-- 自动扫描con.shpun以及子包下所有的Bean -->
<context:component-scan base-package="com.shpun"></context:component-scan>

BaseDaoImpl 类定义上加上 @Repository
CustomerDaoImpl 类定义上加上 @Repository ,set方法上加上@Autowired
ActivityServiceImpl 类定义上加上 @Service,构造器上加上@Autowired

相关文章

  • Sring 依赖注入

    Spring 注入有构造注入和设值注入。常用设置注入。 package com.shpun.dao 包下 Base...

  • 开源项目的依赖注入

    开源项目的依赖注入 依赖注入概念 依赖注入(DI:Dependency Injection): 依赖注入方式: B...

  • 资料收集

    依赖注入 AngularJs依赖注入的研究 (已读) 依赖注入(已读)

  • Dagger2常用注解诠释

    依赖注入 控制反转(IoC)与依赖注入(DI)浅谈依赖注入理解依赖注入(IOC)和学习Unity Gradle配置...

  • Day62 Spring 依赖注入源码解析

    手动注入自动注入 依赖注入,set注入,构造注入 依赖注入: Key依据 byType byName constr...

  • Dagger2 源码分析

    Dagger简单介绍 Dagger2涉及到依赖注入,有关依赖注入的请到理解依赖注入 通过注解方式实现依赖注入分为两...

  • 依赖注入(转)

    依赖注入(转) 原文地址:依赖注入原理

  • Spring学习之依赖注入

    Spring学习之依赖注入 依赖注入的基本概念 依赖注入(Dependecy Injection),也称为IoC(...

  • 依赖注入及Dagger2框架简介

    依赖注入简介 在介绍Dagger框架之前我们先来看看依赖注入(Dependence Injection),依赖注入...

  • 浅谈依赖注入

    依赖注入是什么? 依赖注入的作用是什么? 依赖注入的应用场景? 如何实现依赖注入? 对于一个后端程序员来说,依赖注...

网友评论

      本文标题:Sring 依赖注入

      本文链接:https://www.haomeiwen.com/subject/blxsiftx.html