`
n_meng
  • 浏览: 29644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

自动装配讲解

阅读更多

1.定义一个CompanyService.java

package cn.csdn.service;

public class CompanyService {

	public CompanyService() {
		System.out.println("------初始化companyService--------");
	}

	
}

 2.定义一个EmpService.java

package cn.csdn.service;

public class EmpService {
	/*员工的名称*/
	private String name;
	/*公司对象*/
	private CompanyService companyService;

	
	
	public EmpService() {
		System.out.println("-------初始化EmpService-----------");
	}
	

	public EmpService(String name, CompanyService companyService) {
		super();
		this.name = name;
		this.companyService = companyService;
		System.out.println(".......构造器完成的效果.....");
	}

/*	setXxx注入的方法 xxx简单类型*/
	public void setName(String name) {
		this.name = name;
		System.out.println("-------set注入name成功!------");
	}


	/*setXxx注入的方式  xxx是一个bean对象 companyService*/
	public void setCompanyService(CompanyService companyService) {
		this.companyService = companyService;
		System.out.println("----set注入companyService成功!-----");
	}
	
	
	
	
	/*setXxx xxx属性*/

}

 /*
 * 依赖检查:
 *  在一个类中提供setXxx xxx属性,
 *       此属性是否在在配置文件中进行配置的处理就称为:依赖检查
 * none:不检查
 *      就是如果一个类中有setXxx属性,xxx属性可以在配置文件的bean进行
 *      配置,也可以不配置,程序无误。
 * simple:执行的是对于原始类型及集合(除协作者外的一切东西)执行依赖检查
 *
 * objects:仅对协作者执行依赖检查
 *        协作者 bean 与bean 关联系
 *       
 * all:对协作者,原始类型及集合执行依赖检查
 *
 */

 

3.配置文件  autowire.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-2.5.xsd"
	default-dependency-check="none" default-autowire="no">

    <!-- id=companyService -->
	<!-- 员工的bean -->
	<bean id="empService" class="cn.csdn.service.EmpService" scope="singleton"
		dependency-check="objects" autowire="autodetect">
		<property name="name" value="redarmy"/>
		
	</bean>

	<!-- 公司bean -->
	<bean id="comService" class="cn.csdn.service.CompanyService"
		scope="singleton"></bean>
	

</beans>

 4.配置文件  applicationContext.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-2.5.xsd"
	default-dependency-check="none" default-autowire="no">

	<!-- 员工的bean -->
	<bean id="empService" class="cn.csdn.service.EmpService" scope="singleton"
		dependency-check="all">
		<!--当dependency-check="simple" 必须为name加 property配置 -->
		<property name="name" value="redarmy" />
        <!-- 当dependency-check="objects" 必须为companyService加property配置 -->
	    <property name="companyService" ref="companyService"/>
	</bean>

	<!-- 公司bean -->
	<bean id="companyService" class="cn.csdn.service.CompanyService"
		scope="singleton"></bean>

</beans>

 5.测试类 App.java

package cn.csdn.service;

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

public class App {

	@Test
	public void app() {
		/* 初始化容器 */
		ApplicationContext ac = new 
		     ClassPathXmlApplicationContext("classpath:autowire.xml");
	}

}

 /*
 * 初始化容器
 *   搜索容器中scope="singleton"的bean,如果该bean没有实现延迟初始化,那么就
 *   实例化该bean
 *   --------------执行-bean---构造器初始化bean
 *   --------------执行该bean中的属性注入的方法 set注入
 * */

 

知识点讲解:

自动装配:Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系
     针对的对象是:bean 是spring容器中配置的bean
     对原始类型 String 不能够使用自动装配。
spring的配置文件中的beans标签中有一个 default-autowire 其默认值是"no"
 在配置文件中的所有bean都默认采用此装配方式
no: 不自动装配、
   采用ref="引入协作者"进行装配
  
byName:根据属性名自动装配。
             此选项将检查容器并根据(xxx)名字查找与属性(setXxx xxx的名字)完全一致的bean,并将其与属性自动装配。
             例如,在bean定义中将autowire设置为byName,而该bean包含master属性
             (同时提供setMaster(..)方法),Spring就会查找名为master的bean定义,
               并用它来装配给master属性。
              
byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。
如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。
若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。
如果你不希望这样,那么可以通过设置dependency-check="objects"
让Spring抛出异常。

constructor:与byType的方式类似,不同之处在于它应用于构造器参数。
如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。


autodetect:通过bean类的自省机制(introspection)
来决定是使用constructor还是byType方式进行自动装配。
如果发现默认的构造器,那么将使用byType方式。

0
1
分享到:
评论

相关推荐

    spring自动装配

    这个文件可能包含了关于Spring自动装配的教程材料,例如代码示例、配置文件或者相关的讲解文档。 综上所述,Spring自动装配是Spring框架的重要特性,它通过控制反转原则实现了对Bean依赖的自动化管理。开发者可以...

    对象自动装配器

    描述中的链接指向了一篇CSDN博客文章,虽然具体内容无法在此直接引用,但根据标签和标题,我们可以推测文章可能讲解了如何使用Spring框架的自动装配功能来初始化和管理Servlet中的对象,以及如何利用SQL操作数据库,...

    Spring的Autowired自动装配(XML版本+Annotation版本+源码+解析)

    本篇将重点讲解Spring的@Autowired自动装配机制,包括XML配置版和注解版,并深入到源码层面进行解析。 @Autowired是Spring框架中的一个核心注解,用于实现自动装配bean的需求。当我们想要在类中注入某个依赖时,...

    zhuangpei.rar_UG_UG自动装配_visual c_zhuangpei_装配

    《UG自动装配技术详解——基于Visual C++的实现》 在现代工业设计中,计算机辅助设计(CAD)软件扮演着至关重要的角色,其中UG(Unigraphics NX)是一款广泛使用的三维建模工具,尤其在机械工程领域。UG的自动装配...

    使用注解自动装配需要组件扫描.zip

    本教程将深入讲解如何使用注解进行组件扫描,以实现Spring应用中的对象自动装配。 首先,我们需要了解Spring的组件扫描(Component Scanning)。组件扫描是Spring的一项功能,它会自动发现应用上下文中定义的Bean。...

    自动装配模拟.zip

    通过上述讲解,我们可以看出Spring Boot的自动装配机制是其简洁、高效的一大特点,它极大地降低了开发者的配置负担,让我们能更专注于业务逻辑。通过深入理解并灵活运用自动装配,我们可以更好地构建和维护Spring ...

    手动实现SpringBoot自动装配类

    本教程将深入讲解如何手动实现Spring Boot的自动装配类,以提升开发效率并确保应用的可维护性。 首先,了解Spring Boot自动装配的基本原理。自动装配是通过`@EnableAutoConfiguration`注解来开启的,这个注解会触发...

    第二节 走向自动装配1

    本文将深入讲解Spring中的注解场景,包括数据仓储模式、通用组件模式、服务模式、Web控制器模式以及配置类模式,并探讨如何通过这些注解走向自动装配。 首先,让我们来看看各个模式注解的用途: 1. **数据仓储模式...

    Spring的自动装配Bean的三种方式

    本文将详细讲解Spring中自动装配Bean的三种主要方式:byName、byType以及constructor。这些方法帮助Spring的IoC容器自动识别并连接Bean的依赖,从而减少手动配置的工作量。 首先,我们来看第一种自动装配方式——`...

    CATIA装配技巧.pdf

    本文将对CATIA装配技巧进行详细的介绍,包括装配环境参数设置、在装配文件中利用装配关联关系来建立新零件方法、装配文件添加文件后第一步要使用固定命令、重复使用阵列命令、天讲解“毛衣去毛器”案例中“发布”...

    ProE产品装配与机构仿真

    通过以上讲解,我们可以看出“ProE产品装配与机构仿真”不仅涉及机械设计的基础知识,还涵盖了高级的仿真技术,这对于提升产品的质量和效率,减少实物原型测试的需求,具有重大意义。学习和掌握这些技能,对于工程师...

    [课堂课件讲解]Java微服务实践-Spring Boot 自定义启动器.pptx

    自动装配模块(Autoconfigure Module)是Spring Boot Starter的核心组件之一,自动装配Bean(Auto-Configuration Beans)是其主要功能之一。自动装配Bean是由标准Spring @Configuration实现,结合Spring 4的新特性...

    Spring面试题详细讲解

    autodetect:如果有默认的构造器,则通过 constructor 的方式进行自动装配,否则使用 byType 的方式进行自动装配。 描述 Spring 事务的只读、超时、回滚的原则。 1. Spring 事务的只读“只读事务”并不是一‘’个...

    soildworks 高级装配官方教程

    在大型装配体管理方面,教程详细讲解了如何使用组件实例(Component Instance)、组件引用(Component Reference)以及装配体级别的参数化控制。这些方法能有效减少设计数据的冗余,便于修改和更新整个装配结构。...

    系统和解决方案(用于机器人,物料传送线,加工和装配).zip

    文件可能会讨论自动装配技术,如机器视觉引导装配、伺服驱动装配等,以及如何设计装配工作站以确保装配的精度和一致性。 5. 系统集成:在实际应用中,机器人、物料传送线、加工设备和装配工作站需要集成在一个协调...

    ProE课程设计(零件、装配图、工程图)

    本课程设计以液压缸为例,深入讲解ProE在零件设计、装配图构建以及工程图绘制中的应用技巧和步骤。 一、零件设计 1. 基础特征建模:液压缸主要由缸体、活塞杆、活塞等部件组成。在ProE中,我们首先通过基础特征如...

    自动化控制系统装配实训课程改革探索与实践.pdf

    在本文中,作者周敬业针对技工学校自动化控制系统装配实训课程存在的问题,结合自身在珠海格力智能装备有限公司的实习经验,分析了传统实训教学中存在的不足,并提出了改革探索思路,详细阐述了实践案例,并分享了...

    机械制造系统自动化培训课件.pptx

    为了更具体地展示自动化技术的应用,本课程还会通过轿车换挡器半自动装配系统的设计实例,详细解读自动化技术在产品装配中的实际应用和实施步骤。 通过学习本课程,学员们将能够全面掌握机械制造自动化技术的各个...

    三维产品设计ProE-创建装配图.pptx

    在"三维产品设计ProE-创建装配图.pptx"中,重点讲解了如何创建和管理装配图。下面将详细阐述这些知识点: 1. **创建装配图**:装配图是ProE中的一种关键功能,它允许用户将多个零部件组合成一个完整的结构。在开始...

Global site tag (gtag.js) - Google Analytics