spring的三种注入方式:
IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同时,要是产生的是单利的bean,他还可以给管理bean的生命周期!
spring的IOC有三种注入方式 第一是根据属性注入 也叫set方法注入;第二种是根据构造方法进行注入;第三种是根据注解进行注入,这种方式我认为比较好,方便,要是bean多的话,使用前两种方式会使得配置文件过于臃肿。
Spring的优点:主要是根据它的IOC和AOP体现的。我感觉他就是把我们以前用到的工厂模式和代理模式进行了一个封装。IOC主要是解决了代码的耦合性问题,而AOP是面向切面编程的最好解释!
- 接口注入(不推荐)
- getter,setter方式注入(比较常用)
- 构造器注入(死的应用)
关于getter和setter方式的注入:
- autowire="defualt"
- autowire=“byName”
- autowire="bytype"
例如:有如下两个类需要注入
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 package org.jia;
2
3 public class Order {
4 private String orderNum;
5 @SuppressWarnings("unused")
6 private OrderItem orderitem;
7
8 public OrderItem getOrderitem() {
9 return orderitem;
10 }
11
12 public void setOrderitem(OrderItem orderitem) {
13 this.orderitem = orderitem;
14 }
15
16 public String getOrderNum() {
17 return orderNum;
18 }
19
20 public void setOrderNum(String orderNum) {
21 this.orderNum = orderNum;
22 }
23
24 }
25 package org.jia;
26
27 public class OrderItem {
28 private String orderdec;
29
30 public String getOrderdec() {
31 return orderdec;
32 }
33
34 public void setOrderdec(String orderdec) {
35 this.orderdec = orderdec;
36 }
37 }
38
getter&&setter方式第一种注入:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="orderItem" class="org.jia.OrderItem">
<property name="orderdec" value="item00001"></property>
</bean>
<bean id="order" class="org.jia.Order" >
<!-----注入变量 名字必须与类中的名字一样------->
<property name="orderNum" value="order000007"></property>
<!--注入对象 名字为orderitem,所属的类的应用id为orderItem-->
<property name="orderitem" ref="orderItem"></property>
--></bean>
</beans>
getter&&setter方式第二种注入: byName
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--此时的id就必须与Order.java中所定义的OrderItem的对象名称一样了,不然就会找不到-->
<bean id="orderitem" class="org.jia.OrderItem">
<property name="orderdec" value="item00001"></property>
</bean>
<bean id="order" class="org.jia.Order" autowire="byName">
<property name="orderNum" value="order000007"></property>
</bean>
</beans>
getter&&setter方式第三种注入:byType
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--按照byType注入则就与id没有关系,可以随便定义id !!!但是不能出现多个此类的id-->
<bean id="orderitdfadafaem" class="org.jia.OrderItem">
<property name="orderdec" value="item00001"></property>
</bean>
<bean id="order" class="org.jia.Order" autowire="byType">
<property name="orderNum" value="order000007"></property>
</bean>
</beans>
关于构造器的注入:
autowire="constructor"
需要在Order.java中加入一个构造器
public Order(OrderItem item ){ orderitem = item; }
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="orderItem" class="org.jia.OrderItem">
<property name="orderdec" value="item00001"></property>
</bean>
<bean id="order" class="org.jia.Order" autowire="constructor">
<property name="orderNum" value="order000007"></property>
</bean>
</beans>
分享到:
相关推荐
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 **一、构造器注入** 构造器注入是通过构造函数来传递依赖对象的一种方式。当类有多个构造函数时,Spring会使用带有最多参数的构造函数...
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 首先,我们来看构造器注入。构造器注入是在创建对象时,通过构造器传递依赖对象。这种方式强制了对象在创建时就必须提供所有必要的依赖...
本篇主要介绍Spring中的三种注入方式,着重讲解在"Spring三种注入方式(二)"中的内容。我们将深入探讨setter注入,这是Spring中最常见的注入方式之一。 ### 一、setter注入 setter注入是通过Spring容器调用对象的...
Spring 三种依赖注入方式 Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口...
下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`文件中定义Bean。例如,对于`Student`和`Teacher`类,我们分别创建`bean`标签...
Spring Boot引入了一种更智能的依赖注入方式——自动配置。自动配置是通过`@EnableAutoConfiguration`注解启动的,它根据项目中的类路径和特定条件自动配置Bean。例如,如果类路径下存在`MongoClient`的jar,Spring ...
本文将深入探讨Spring中的三种依赖注入方式,并结合源码分析其工作原理。 1. **构造器注入** 构造器注入是通过构造函数来传递依赖对象的。当创建一个类的新实例时,Spring容器会调用带有所需参数的构造函数,从而...
Spring Boot 中的几种注入方法 在 Spring Boot 中,注入是一种非常重要的机制,用于将 bean 对象注入到其他 bean 对象中,以便实现松耦合和高内聚的设计目标。下面我们将对 Spring Boot 中的几种注入方法进行详细的...
下面我们将详细探讨Spring 中的三种注入方式:接口依赖注入(Type1)、setter/getter 注入(Type2,也称为属性注入)和构造方法注入(Type3)。 1. **接口依赖注入(Type1)** 这种注入方式相对不常见,主要适用于...
本文将详细探讨Spring中的两种主要注入方式:构造器注入和setter注入,以及它们各自的特点和适用场景。 首先,让我们理解什么是依赖注入(Dependency Injection,简称DI)。在传统的编程模式中,一个类通常会直接...
在XML配置中也可以开启自动注入: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=...
Spring提供了三种主要的注入方式,分别是:构造器注入、setter注入(类型2)和基于注解的注入(类型3)。下面我们将详细探讨这三种注入方式及其应用场景。 ### 1. Setter注入 (Type2) setter注入是最常见的注入方式...
在Spring中,IOC的主要实现方式有两种:依赖注入(Dependency Injection,简称DI)和基于接口的配置。下面将对这两种方式进行详细阐述。 一、依赖注入(Dependency Injection) 1. **构造器注入**:通过构造函数来...
Spring的三种注入方式: 1.依赖注入 2.命名空间的xml注入方式 3.自动装配方式
总结,Spring的依赖注入提供了构造器注入、设值注入和接口注入三种方式,帮助开发者实现松耦合和高内聚的设计。根据项目需求和场景,选择合适的方式能有效提升代码质量。同时,结合源码阅读和使用工具,如IDEA的代码...
总结,Spring的注解方式为Bean的属性注入提供了简洁、灵活的方式,大大减少了XML配置的工作量。通过深入理解这些注解以及其背后的工作原理,我们可以更好地利用Spring框架进行开发。同时,结合源码阅读和相关工具的...
### Spring与Struts整合的三种主要方式 在Java Web开发领域,Spring框架和Struts框架都是非常重要的技术。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为Java应用提供了轻量级的解决方案。而...
总结来说,这个"Spring与IoC系列三:基于XML的依赖注入测试程序di.rar"涵盖了Spring框架的核心特性——依赖注入,通过XML配置文件管理对象间的依赖关系,是学习和实践Spring框架不可或缺的一部分。通过学习和操作这...
花了些时间做了一个实验,彻底弄懂了spring Annotation注入的方式。凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处...
或者,使用SpEL(Spring Expression Language)表达式进行更复杂的注入: ```xml ['java.version']}" /> ``` 在这个例子中,`#{}` 表达式会被解析为当前系统的 `java.version` 系统属性值。 总的来说,Spring...