spring 依赖注入方式总结详解

大数据新视界 --大数据大厂之 Sqoop 在大数据导入导出中的应用与技巧 本文深入阐述 Sqoop 在大数据导入导出中的应用,涵盖其在生态中的地位、导入导出命令(含多种示例、特殊情况处理)、经典案例、使用技巧(性能优化含不同规模集群建议与量化指标、错误处理含日志查看和分步测试、安全事项含 SSL/TLS 配置和用户权限管理多方面)以及不同操作系统下的安装和配置,为 Sqoop 使用者提供全面参考。 阅读详情

Spring 能有效地组织 J2EE 应用各层的对象。不管是控制层的 Action 对象,还是业务层的 Service 对象,还是持久层的 DAO 对象,都可在 Spring 的管理下有机地协调、运行。 Spring 将各层的对象以松耦合的方式组织在一起, Action 对象无须关心 Service 对象的具体实现, Service 对象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大大减少。

上面所说的一切都得宜于 Spring 的核心机制,依赖注入。依赖注入让 bean 与 bean 之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。

理解依赖注入 :

依赖注入 (Dependency Injection) 和控制反转 (Inversion of Control) 是同一个概念。具体含义是 : 当某个角色 ( 可能是一个 Java 实例,调用者 ) 需要另一个角色 ( 另一个 Java 实例,被调用者 ) 的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在 Spring 里,创建被调用者的工作不再由调用者来完成,因此称为控制反转 ; 创建被调用者实例的工作通常由 Spring 容器来完成,然后注入调用者,因此也称为依赖注入。

案例:

package cn.csdn.spring;

import java.util.Date;

public class PersonServiceBean {
 
 private String name;
 private Integer age;
 private Date brith;

//set注入
 public void setName(String name) {
  this.name = name;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public void setBrith(Date brith) {
  this.brith = brith;
 }
 public PersonServiceBean() {
  super();
  // TODO Auto-generated constructor stub
 }
 public PersonServiceBean(String name, Integer age, Date brith) {
  super();
  this.name = name;
  this.age = age;
  this.brith = brith;
 }
 @Override
 public String toString() {
  return "PersonServiceBean [name=" + name + ", age=" + age + ", brith="
    + brith + "]";
 }
 
 

}

applicationContext.xml
第一种方法:

<bean id="personServiceBean" class="cn.csdn.spring.PersonServiceBean">
      <!-- 依赖注入的方式 -->
      <property name="name"><value>zhangxiaocong</value></property>
      <property name="age"><value>33</value></property>
      <property name="brith" ref="date">
     
     
     
      </property>
      <!-- 出生日期 -->
    </bean>
    <bean id="date" class="java.util.Date">
     <property name="year"><value>97</value></property>
     <property name="month"><value>1</value></property>
     <property name="date"><value>1</value></property>
   </bean>

第二种方法:

 <bean id="personServiceBean1" class="cn.csdn.spring.PersonServiceBean">
     <!-- 构造器注入:全部都要对象,不能少属性的构造 -->
     <constructor-arg index="0">
      <value>dfdfdfd</value>
     
     
     </constructor-arg>
   
     <constructor-arg index="1">
      <value>28</value>
     
     
     </constructor-arg>
   
     <constructor-arg index="2">
     <bean  class="java.util.Date"></bean>
     
     
     </constructor-arg>
   
    </bean>
    <bean id="personServiceBean" class="cn.csdn.spring.PersonServiceBean">
     <!-- 构造器注入:按照类型进行匹配-->
      
     <constructor-arg type="java.lang.String" value="小弟"/>
     <constructor-arg type="java.lang.Integer" value="21"/>
     <constructor-arg type="java.util.Date" ref="date"/>
     
    </bean>
   
     <bean id="date" class="java.util.Date">
     <property name="year"><value>97</value></property>
     <property name="month"><value>1</value></property>
     <property name="date"><value>1</value></property>
     
    </bean>
   测试:
 public void test() {

//获取应用程序上下文
  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

第二步:根据应用程序上下文对象的getBean("Id名称")获取bean的实例对象
  PersonServiceBean p=  (PersonServiceBean) context.getBean("personServiceBean");
  System.out.println(p.toString());
 }  

集合的依赖注入

package cn.csdn.spring;

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class TeacherServiceBean {
 private List<String> list;
 private Set<String> set;
 private Map<String,String> map;
 
 private Properties p;
 public Properties getP() {
  return p;
 }
 public void setP(Properties p) {
  this.p = p;
 }
 public List<String> getList() {
  return list;
 }
 public void setList(List<String> list) {
  this.list = list;
 }
 public Set<String> getSet() {
  return set;
 }
 public void setSet(Set<String> set) {
  this.set = set;
 }
 public Map<String, String> getMap() {
  return map;
 }
 public void setMap(Map<String, String> map) {
  this.map = map;
 }
 
 public TeacherServiceBean(List<String> list, Set<String> set,
   Map<String, String> map, Properties p) {
  super();
  this.list = list;
  this.set = set;
  this.map = map;
  this.p = p;
 }
 public TeacherServiceBean() {
  super();
  // TODO Auto-generated constructor stub
 }
 @Override
 public String toString() {
  return "TeacherServiceBean [list=" + list + ", set=" + set + ", map="
    + map + "]";
 }
 

}

第一种方法
<bean id="teacherServiceBean1" class="cn.csdn.spring.TeacherServiceBean">
       <property name="list">
        <list>
         <value>eedfsds</value>
         <value>dfdd</value>
         <value>ee</value>
         <value>eeeed</value>
         <value>ddfvfvfd</value>
         <value>dcdd</value>
         <value>dd</value>
         <value>cdfgdv</value>
        
        
        </list>
       
       
       
       </property>
       <property name="set">
        <set>
         <value>eedfsds</value>
         <value>dfdd</value>
         <value>ee</value>
         <value>eeeed</value>
         <value>ddfvfvfd</value>
         <value>dcdd</value>
         <value>dd</value>
         <value>cdfgdv</value>
        
        
        </set>
       
       
       
       </property>
       <property name="map">
        <map>
        <entry>
         <key><value>ffffff</value></key>
         <value>fffffffffff</value>
        
        </entry>
        
        
        </map>
       
       
       
       </property>
       
       <property name="p">
       
       <props>
        <prop key="00001"> sddsdsd</prop>
        <prop key="00001"> sddsd</prop>
        <prop key="00001"> sd</prop>
        <prop key="00001"> sdds</prop>
       </props>
       
       
       </property>
   
   
   
   
    </bean>
   
   
   
   
   
   
   
    <bean id="teacherServiceBean" class="cn.csdn.spring.TeacherServiceBean">
       <constructor-arg>
        <list>
         <value>eedfsds</value>
         <value>dfdd</value>
         <value>ee</value>
         <value>eeeed</value>
         <value>ddfvfvfd</value>
         <value>dcdd</value>
         <value>dd</value>
         <value>cdfgdv</value>
        
        
        </list>
       
       
       
       </constructor-arg>
       <constructor-arg>
        <set>
         <value>eedfsds</value>
         <value>dfdd</value>
         <value>ee</value>
         <value>eeeed</value>
         <value>ddfvfvfd</value>
         <value>dcdd</value>
         <value>dd</value>
         <value>cdfgdv</value>
        
        
        </set>
       
       
       
       </constructor-arg>
      <constructor-arg>
        <map>
        <entry>
         <key><value>ffffff</value></key>
         <value>fffffffffff</value>
        
        </entry>
        
        
        </map>
       
       
       
       </constructor-arg>
       
       <constructor-arg>
       
       <props>
        <prop key="00001"> sddsdsd</prop>
        <prop key="00001"> sddsd</prop>
        <prop key="00001"> sd</prop>
        <prop key="00001"> sdds</prop>
       </props>
       
       
       </constructor-arg>
   
   
   
   
    </bean>
 第二种方法

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:util="http://www.springframework.org/schema/util"
       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-2.5.xsd
           http://www.springframework.org/schema/util
           http://www.springframework.org/schema/util/spring-util-2.5.xsd
          
           ">
        
    <bean id="teacherServiceBean" class="cn.csdn.spring.TeacherServiceBean">
       <property name="list">
        <util:list>
         <value>java书</value>
       
        </util:list>
       </property>
       
       <property name="set">
       
        <util:set>
        
         <value>c++</value>
        
        
        </util:set>
       
       </property>
       
       <property name="map">
       
        <util:map>
         <entry key="0000s00001" value="java编程开发基础"></entry>
        </util:map>
       </property>
   
     <property name="p">
      <util:properties>
      
      
      </util:properties>
     </property>
   
   
   
    </bean>
    
      
</beans>
 测试:

public void test2() {
  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext3.xml");
  TeacherServiceBean p=  (TeacherServiceBean) context.getBean("teacherServiceBean");
  
  
  List<String> list=p.getList();
  for(String str:list){
   System.out.println("List的集合的反馈信息"+str);
   
  }
  
  Set<String> set=p.getSet();
  
  for(String str:set){
   System.out.println("Set集合返回的值"+str);
  }
  
  
  
  
  Map<String,String> map=p.getMap();
  
  Set<Entry<String,String>> msp=map.entrySet();
  
  for(Entry str:msp){
   System.out.println("Map集合返回的值"+str.getKey()+"---"+str.getValue());
   
  }
  
  
  
  
  
  Properties prop=  p.getP();
  Set<Entry<Object,Object>> ppp=prop.entrySet();
  for(Entry entry:ppp){
   System.out.println("Properties集合返回的值"+entry.getKey()+"________"+entry.getValue());
   
  }
  
  
 }

Sqoop将MySQL数据导入HDFS 如果使用了m 1 ,也就是说我的map只有一个,只有一个,就意味着不需要分割为4份了,所以也就不需要指定分割字段是什么了。,但是一定要注意的是 SQL语句中必须添加 $CONDITIONS ,而这个字段,必须跟split-by 一起使用,才行。如果你使用--query 编写了一个SQL语句,表名,列名,where条件都不需要写了,因为都在SQL语句中了。3、指定split-by的时候,查询结果必须包含这个列,否则报:无法识别的列。--username 你的用户名 \。--password 你的密码 \。 阅读详情

相关推荐

通过Sqoop工具将Oracle数据库中的表数据导入到Hive的过程

Sqoop是一款开源的工具主要用于在Hadoop(Hive,HBasw)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 将各种关系型数据导入Hive中,其实大同小异,这里就以Oracle数据为例

舒克的博客 4832

spring依赖注入的实现原理

NULL 博文链接:https://matchless1688.iteye.com/blog/1038302

从零教你如何通过Sqoop把Hadoop HDFS上的数据同步数据到MySQL中(附带数据集,报错提示并修改)

Sqoop同步数据到MySQL实验结果

qq_50975494的博客 2604

Spring之依赖注入原理

依赖注入是 spring 框架核心 IOC 的具体实现,也是面试常问的考点。

qq_14946371的博客 1422

借鉴sqoop实现hdfs文件内容导入mysql

这次需要将hadoop mr的计算结果导入到mysql中,虽然是mr的结果导入db中,为了保险起见,还是存在hdfs上,之后读取hdfs上的结果导入db中,读取失败可重新执行单个读取导入过程。 一般先动手前,有个思路,再百度看看是否有更好的实现,大略搜了一下,发现sqoop貌似实现了hdfs和各种dc之间的读取写入。这里,因为业务简单,都是insert语句不涉及事务,只是连接一个db,不

chenchenrao的专栏 1409

使用Sqoop将数据导入Hadoop的详细教程

Sqoop默认使用逗号作为字段分隔符。如果数据中包含逗号,可能会导致数据解析错误。使用选项可以指定自定义字段分隔符。通过完成本教程,已经学会了如何使用Sqoop将数据从关系型数据库导入到Hadoop的HDFS中。这是大数据处理中的一个重要步骤,可以在Hadoop集群上进行更深入的数据分析和处理。Sqoop提供了许多其他选项和参数,以满足不同情况下的需求,例如增量导入、并行处理等等。

日常分享数据分析开发、编程语言内容 1650

传智播客 srping依赖注入原理详解

     所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它。所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。这种现象就称作控制反转,即应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转

JAVA专栏 4268

数据集成工具—Sqoop

数据集成/采集/同步工具 数据集成工具—Sqoop数据集成/采集/同步工具Sqoop简介Sqoop安装1、上传并解压2、修改文件夹名字3、修改配置文件4、修改环境变量5、添加MySQL连接驱动6、测试准备MySQL数据登录MySQL数据库创建student数据库切换数据库并导入数据另外一种导入数据的方式使用Navicat运行SQL文件导出MySQL数据库importMySQLToHDFS编写脚本,保存为MySQLToHDFS.conf运行方式一: 执行脚本运行方式二:直接在shell运行注意事项:MySQ

weixin_44077750的博客 1403

Spring 的依赖注入原理

Spring的依赖注入原理

golove666的博客 2030

记一次 sqoop2 shell 转移mysql 数据到hdfs 爬坑之路(步骤详细!!!)

文章目录出现问题汇总具体过程流水账进入sqoop2 shell环境:开始创建mysql 导入的link:创建导出到hdfs 的link:创建数据从mysql 转移到hdfs 的job :运行job &amp; 排错过程开始运行job :第一个错误:[0003]第二个错误:[0016]第三个错误:[0001]第四个错误:[0007] 出现问题汇总 GENERIC_JDBC_CONNECTOR_00...

3384

大数据-安装sqoop1.4.7-并记录利用sqoop将mysql数据导入到hive的详细过程---内含hive查询hdfs的原理研究

一、场景描述 上一篇博客研究了不用sqoop将mysql中的数据导入到hive中,发现有一定的局限性,数据量较少还好,要是数据表过多,就显的很繁琐,所有我想简化这个步骤,利用sqoop来导入。 毕竟sqoop(SQL-to-Hadoop)是前辈们专门研究出来的,用于关系数据库与非关系数据库之间做数据传输的。 因为我的hadoop环境是自己安装的,目前还没有sqoop环境,所以我需要先安装sqoop环境,下面做一个详细的介绍,从sqoop的安装,...

weixin_47055922的博客 1001

spring——依赖注入原理及注入方式

总结来说,依赖注入的原理是通过将对象的依赖关系由外部容器来管理和注入,从而解耦组件之间的依赖关系,提高代码的灵活性、可维护性和可测试性。是通过在对象的构造函数、属性或方法中注入所依赖的对象,而不是在对象内部创建或获取依赖对象。这样,对象的依赖关系由外部容器来管理,对象只需要关注自身的核心功能,而不需要关心如何获取依赖对象。(6)使用目标对象:完成依赖注入后,可以通过目标对象的其他方法或属性来使用注入的依赖对象。🟠(1)定义对象的依赖属性:在目标对象中定义一个或多个私有属性,用于存储依赖对象的引用。

yangqiqi1997的博客 4458

Sqoop数据迁移实战:从MySQL到HDFS/Hive的完整指南

本文详细介绍了使用Sqoop进行数据迁移的完整流程,从MySQL到HDFS/Hive的实战指南。内容包括Sqoop的下载安装、环境配置、基础导入操作、高级查询导入、性能调优技巧以及生产环境中的常见问题解决方案,帮助开发者高效完成大数据迁移任务。

weixin_28223453的博客 429

Spring的依赖注入原理浅析

最近学习中分析了下spring的控制反转,将思考Mark下 Spring的依赖注入依靠了动态代理和反射 最初我认为Spring的扫包时通过反射实例化了类,但是有个问题一直想不通 就是反射的方式获取实例时有可能会抛出异常,但是在手动获取Spring管理的对象时却不需要捕捉异常,当时懵了半天的我甚至猜测Spring是不是用了什么我不知道的方式实例化对象,后来想了下Spring再厉害也不可能跳出Ja...

纵马饮白虹的博客 5332

Sqoop 使用过程中的常见报错及解决方案

Sqoop 是一个用来在 Hadoop 和关系型数据库(如 MySQL、PostgreSQL、Oracle)之间传输数据的工具。在使用 Sqoop 进行数据导入或导出时,常常会遇到各种错误。在使用 Sqoop 的过程中,常见的报错大多与数据库连接、权限配置、HDFS 目标目录和内存不足等问题相关。检查 Sqoop 命令中的参数是否完整,尤其是数据库连接信息和目标目录等关键参数。Sqoop 在导入数据时发现 HDFS 目标目录已经存在,无法覆盖已有数据。2. 确保 Sqoop 命令中的表名拼写正确。

m0_70691645的博客 2638

sqoop如何将数据库中的表导入到hive表中去

首先需要将数据库中表的结构映射到hive表中 bin/sqoop create-hive-table –connect jdbc:mysql://node-1:3306/user –username root –password root –table table_name –hive-table db.table_name 开始导入数据 bin/sqoop import –con...

weixin_43440736的博客 1563

Sqoop数据导入实战:从MySQL到HDFS与Hive的完整指南

本文详细介绍了如何使用Sqoop工具将MySQL数据高效导入HDFS与Hive的完整实战指南。从环境准备、基础导入操作到高级参数配置,涵盖了增量导入、分区表处理以及生产环境最佳实践,帮助开发者快速掌握Sqoop数据导入技术,提升大数据处理效率。

weixin_30756499的博客 487

sqoop用法——数据全量导入(导出)、增量导入(导出)

1.把MySQL的表导入hdfs bin/sqoop list-databases -connect jdbc:mysql://192.168.130.29:3306/ -username root -password xxx 可以查看MySQL的所有数据库 注意:关闭防火墙,否则会报Got error, status=ERROR, status message , ack with firstBadLink as 192.168.130.30:9866错误 bin/sqoop import \

weixin_47303949的博客 1340
上一篇: Spring bean 的生命周期的详解
下一篇: spring 特殊bean详解
日依
博客等级 码龄15年 165粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值