`
happiness0617
  • 浏览: 5869 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring学习(二)---在IoC容器中装配Bean(2)

阅读更多
##四 注入参数详解
###1.字面值
  XML中共有5个特殊字符,分别是:&<>“‘。如果配置文件中的注入值包括这些特殊字符,就需要进行特殊处理。有两种解决办法:其一,采用<![CDTA[]]>特殊标签,将包含特殊字符的字符串封装起来;其二,使用XML庄毅序列表示这些特殊的字符。
 
###2.引用其他Bean

```XML
<bean id ="car" class="com.baobaobao.attr.Car"/>
<bean id="boss" class="com.baobaobao.attr.Boss">
  <property name="car">
  <!-- 引用上面定义的car Bean-->
    <ref bean="car"></ref>
  </property>
</bean>
```
<ref> 元素可以通过以下三个属性引用容器中其他Bean
- bean :通过该属性可以引用同一容器或父容器的Bean,
- local:通过该属性只能引用同一配置文件中定义的Bean
- parent:引用父容器中的Bean

###3.内部Bean
如果car Bean纸杯boss Bean引用而不会被容器中任何其他的Bean引用,则可以将car以内部Bean的方式注入到Boss中:
```XML
<bean id="boss" class="com.baobaobao.attr.Boss">
<property name="car">
   <bean class="com.baobaobao.attr.Car">
   <property name="maxSpeed" value="200"/>
     <property name="price" value="200000.00"/>
   </bean>
</property>
</bean>
```
###4.null值
`<property name="brand"><null/></property>`
###5.级联属性
```XML
<bean id="boss" class="com.baobaobao.attr.Boss">
<property name="car.price" value="200000.00"/>
</bean>
```
按照上面的配置,Spring将调用Boss.getCar().setPrice("200000.00")方法进行属性的注入操作。此时,需要在Boss类中,对Car进行初始化。

###6.集合类型属性
####list
```XML
<bean id="boss" class="com.baobaobao.attr.Boss">
<property name="favorites">
   <list>
    <value>aaa</value>
    <value>bbb</value>
    <value>ccc</value>
   </list>
</property>
</bean>
```
####set
```XMl
<bean id="boss" class="com.baobaobao.attr.Boss">
<property name="favorites">
   <set>
    <value>aaa</value>
    <value>bbb</value>
    <value>ccc</value>
   </set>
</property>
</bean>
```
####map
```XMl
<bean id="boss" class="com.baobaobao.attr.Boss">
<property name="favorites">
   <map>
    <entry>
       <key><value>Am</value></key>
       <value>会见客户</value>
    </entry>
   </map>
</property>
</bean>
```
####Properties
```XMl
<bean id="boss" class="com.baobaobao.attr.Boss">
<property name="favorites">
   <props>
    <prop key="jobMail">sss@qq.com</prop>
   </props>
</property>
</bean>
```
还有几个类型用法和上面基本差不多,不一一列出

##五 方法注入
方法注入是用来解决prototype类型的Bean的注入。
###1.lookup方法注入
<bean id="car" class="com.baobaobao.injectfun.Car"
  p:brand="红旗" p:price="20000" scope="prototype"/>
//实施方法注入
<bean id="magicBoss" class="com.baobaobao.injectfun.MagicBoss">
 <lookup-method name="getCar" bean="car"/>
</bean>

通过lookup-method元素标签为MagicBoss的getCar()提供动态实现,返回prototype的carBean,这样Spring将在运行期为MagicBoss接口提供动态实现。


六 <bean>之间的关系
1.继承
//定义抽象bean
<bean id="abstractCar" class="com.baobaobao.Car"
    p:brand="红旗" p:price="20000" p:color="黑色" abstract="true"/>
//继承与abstract
<bean id="car" p:color="红色" parent="abstractCar">

父<bean>的主要功能是为了简化子<bean0>的配置,所以一般声明为abstract="true",表示这个<bean>不实例化为一个对应的Bean。如果用户没有指定abstract="true"则Spring IoC容器会实例化一个名为abstractCar 的Bean。

2.依赖   主要用到两个标签:1.<ref> 2.<depends=on>
3.引用

七 Bean作用域
类别说明
singleton在Spring IoC容器中仅存在一个Bean实例,Bean以单实例的方式存在
prototype每次从容器中调用Bean时,都会返回一个新的实例,即每次调用getBean()时,相当于执行new XXXBean()的操作
request每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
session同一个HTTP Session共享一个Bean,不同HTTP Session使用不同的Bean。该作用域仅适用于WebApplicationContext环境
globalSession同一个全局Session共享一个Bean,一般用于Protlet应用环境。该作用域仅适用于WebApplicationContext环境


八  基于注解的配置
1.使用注解定义Bean
  现在基本上用@Repository:用于对DAO实现类进行标注;@Service:用于对Service实现类进行标注;@Controller:用于对Controller实现类进行标注。但也可以用@Component进行标注

2.使用配置信息启动Spring容器
//扫描类包以应用注解定义的Bean   先声明context命名空间
<context:component-scan base-package="com.baobaobao.anno"/>

//过滤  
//1.扫描特定的包
<context:component-scan base-package="com.baobaobao" resource-pattern="anno/*.class"/>

//2.
<context:component-scan base-package="com.baobaobao.anno">
 <context:include-filter type="regex" expression="com\.baobaobao\.anno."/>
 <context:exclude-filter typr="aspectj" expression="com.baobaobao..*COntroller+"/>
</context>
0
1
分享到:
评论

相关推荐

    第四章 在Ioc容器中装配Bean

    在探讨Spring 3.X企业应用开发过程中,第四章的内容聚焦于如何在Spring框架的核心组件——IoC(控制反转)容器中装配Bean。在Spring框架中,Bean装配是指Spring容器将应用程序中的对象进行实例化、配置以及组装的...

    spring在IoC容器中装配Bean详解

    Spring 在 IoC 容器中装配 Bean 详解 Spring 框架中的 IoC 容器是一个核心组件,它提供了 Bean 的装配、管理和依赖注入等功能。在 Spring 框架中,IoC 容器是 Bean 的容器,负责创建、管理和装配 Bean。在本文中,...

    Spring-ioc-jar

    这些配置告诉Spring如何创建、初始化和装配Bean。 2. **容器初始化**: 创建一个`ApplicationContext`或`BeanFactory`实例,加载配置信息。这一步会解析配置文件,生成Bean定义,并构建Bean的依赖图谱。 3. **Bean...

    模拟Spring的IoC容器实现注解自动装配

    在Spring框架中,IoC(Inversion of Control)容器是其核心特性之一,它负责管理对象的生命周期和依赖关系。IoC容器通过控制反转的概念,将对象的创建和依赖关系的配置从应用代码中分离出来,使代码更加灵活、可测试...

    springIOC核心组件分析.vsdx

    spring-beans:Bean工厂与装配 spring-context:上下文,即IOC容器 spring-context-support:对IOC的扩展,以及IOC子容器 spring-context-indexer:类管理组件和Classpath扫描 spring-expression:表达式语句 切面编程: ...

    Spring框架(spring-framework-5.2.6.RELEASE)的jar包

    5. **Instrumentation**:这个模块主要用于服务器端的类加载器和应用级监控,通常在容器环境中使用。 6. **Test**:测试模块支持Spring应用的单元测试和集成测试,包括对Mock对象的支持。 在"spring-framework-...

    spring-demo10-注解-IOC.zip

    而不是由对象自己创建或查找依赖,这些依赖由Spring容器在运行时注入到对象中。 注解是Java语言提供的一种元数据机制,允许我们在源代码中嵌入信息,这些信息可以被编译器或者运行时环境解析和使用。Spring框架充分...

    Spring IOC容器实现分析.pdf 下载

    3. 依赖注入:在实例化Bean的过程中,容器会根据定义的依赖关系,将其他Bean注入到当前Bean中,实现依赖关系的自动装配。 4. 初始化处理:如果Bean定义了初始化方法,容器会在所有依赖注入完成后调用该方法,完成...

    Spring源代码解析(二):IoC容器在Web容器中的启动.doc

    在Spring框架中,IoC(Inversion of Control)容器是核心组件,负责管理应用程序的bean。当我们在Web环境中运行Spring应用时,IoC容器需要在Web容器(如Tomcat、Jetty等)中启动并运行。这个过程涉及到一系列的初始...

    Spring源代码解析(一):IOC容器.doc

    Spring框架的IOC(Inversion of Control,控制反转)容器是其核心组件,它负责管理和装配应用中的对象。在Spring源代码解析的第一部分,我们将聚焦于IOC容器,特别是BeanFactory接口,它是所有Spring容器的基础。 ...

    maven-spring-ioc

    Spring还提供了一种自动装配Bean的方式,即根据类型或名称自动查找并注入依赖。这可以通过`autowire`属性实现: - `byType`:基于依赖类型自动装配。 - `byName`:基于依赖的属性名自动装配。 ### 7. Profile ...

    手写一个SpringIoc容器

    本项目"手写一个SpringIoc容器"旨在模仿Spring的IOC(Inversion of Control,控制反转)功能,帮助开发者深入理解Spring的工作原理,提升对依赖注入(Dependency Injection)模式的认识。 在实现自定义的Spring IOC...

    spring入门学习-3、Bean装配(XML).pdf

    2. **初始化**:当Spring IoC容器加载时,会根据配置文件中的信息创建Bean实例,并执行任何指定的初始化方法。 3. **使用**:开发者可以通过Spring容器获取Bean的实例并进行使用。 4. **销毁**:在某些情况下,...

    spring ioc容器部署实现

    IoC容器是Spring框架的重要组成部分,它负责管理对象的生命周期、配置和装配过程。通过Spring IoC容器,开发者可以将对象间的依赖关系交给Spring容器进行管理,从而实现对象间的解耦。 #### 二、Spring IoC容器的...

    Spring IoC容器实现的结构分析

    在执行过程中,Spring IoC容器首先通过`BeanDefinitionReader`加载和解析bean定义,然后`BeanFactory`根据`BeanDefinition`创建bean实例。如果bean配置了自动装配,`AutowireCapableBeanFactory`会处理依赖注入。...

    spring IOC反射装载bean

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理交给了容器来处理。在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和...

    Spring-IoC 容器 - v1.01

    容器通过读取配置元数据(通常是XML或Java注解),知道如何创建、初始化和装配Bean。开发者无需在代码中硬编码依赖关系,而是声明性地在配置中指定,这就是控制反转的体现。 **控制反转(IoC)/依赖注入(DI)** ...

    Spring的IoC容器

    在Spring中,IoC容器通过配置元数据(如XML、注解或Java配置类)来定义对象及其依赖关系,然后在运行时根据这些信息实例化对象并进行依赖注入。 ### 2. 容器的主要功能 - **对象的实例化**:IoC容器可以创建对象,...

    spring-framework-5.2.0.RELEASE-master.zip

    在源码中,`org.springframework.beans.factory`和`org.springframework.context`这两个包下的类和接口,如`BeanFactory`和`ApplicationContext`,是实现IOC的关键。 **Spring AOP(Aspect Oriented Programming)*...

Global site tag (gtag.js) - Google Analytics