Spring关于Bean

spring创建bean的三种方式:调用构造器,调用静态工厂方法,调用实例工厂方法

静态工厂方法:

<bean id="dog" class="静态工厂类"

factory-method="静态工厂类里面的方法">  

<!-- 配置静态工厂方法的参数 -->

<constructor-arg value="一个参数,如果相同于静态工厂类里面的方法的参数,就返回该参数类的方法"/>

<!-- 驱动Spring以"我是狗"为参数来执行dog的setMsg()方法 -->

<property name="msg" value="我是狗"/>

</bean>

实例工厂方法:

<bean id="chinese" factory-bean="工厂Bean名字"

factory-method="工厂Bean里面的方法名">

<!-- 配置实例工厂方法的参数 -->

<constructor-arg value="chin"/>

</bean>

抽象bean不能被实例化。抽象bean的价值在做父bean被继承,配置设置成abstract="true"

spring里bean继承与java继承区别:前者是对象与对象之间的关系,后者是类与类之间的关系;前者可以是不同类型,后者子类可看做一个特殊的父类;前者子bean不能作父bean使用,后者子类可以完全当作父类实例使用。

Spring中bean容器的生命周期

注入依赖关系之后的行为有:使用init-method属性、实现InitializingBean接口

bean销毁之前的行为有:使用destroy-method属性,实现DisposableBean接口

lookup-method方法:bean定义为抽象类里面有抽象方法名与lookup-method的方法名相同。解决singleton与prototype作用域不同步

获取其他bean的属性值

<bean id="son2" class="org.crazyit.app.service.Son">

<property name="age">

<!-- 使用嵌套Bean为调用setAge()方法指定参数值 -->

<bean id="person.son.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>

</property></bean>

或者<bean id="son2" class="org.crazyit.app.service.Son">

<property name="age">

<util:property-path path="person.son.age"/>

</property></bean>

---恢复内容结束---

原文地址:https://www.cnblogs.com/lijingxiang/p/9581654.html

时间: 2024-07-31 15:24:53

Spring关于Bean的相关文章

Spring Custom Bean with BeanPostProcessor

Spring Custom Bean 1.BeanPostProcessors 这个接口是在spring容器初始化完bean之后 才会被调用,这个接口针对是一个容器,不能夸容器操作的,这个只能在初始化bean之后再改变一些自己的内容,如果想改变bean的结构,需要另外的一个接口:BeanFactoryPostProcessor

spring 配置bean

Main(测试方法) public class Main { public static void main(String[] args) { //1.创建Spring 的IOC容器对象: //spring提供了两种IOC容器的实现 //1.BeanFactory:面向spring本身,,(就是底层的东西) //2.ApplicationContext: 面向使用spring框架的开发者,她提供了更多高级特性,是BeanFactory的子接口 // ----ConfigurableApplica

Spring中Bean的生命周期

Spring中Bean的生命周期过程: 1.Spring对Bean进行实例化(相当于程序中的new Xx()) 2.Spring将值和Bean的引用注入进Bean对应的属性中 3如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法 (实现BeanNameAware清主要是为了通过Bean的引用来获得Bean的ID,一般业务中是很少有在Bean的ID的) 4.如果Bean实现了BeanFactoryAware接口,Spring将调用se

从基础知识到重写Spring的Bean工厂中学习java的工厂模式

1.静态工厂模式其他对象不能直接通过new得到某个类,而是通过调用getInstance()方法得到该类的对象这样,就可以控制类的产生过程.顺带提一下单例模式和多例模式:  单例模式是指控制其他对象获得该对象永远只有同一个对象  而多例模式则是根据需要从某个具体集合中获取所需的对象 1 import java.util.ArrayList; 2 import java.util.List; 3 4 5 public class Car implements Moveable{ 6 private

spring:bean的定义

一个完整的Bean的配置文件: <?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是这个bean的唯一标

理解Spring的Bean工厂

一提到工厂,我们先来回忆前面学习过的工厂方法和抽象工厂模式: 工厂方法:针对产品维度,可以产生新的产品,也可以产生新的产品工厂,既可以扩展产品维度.但是如果我们想在普通工厂上生产产品系列,就会特别麻烦如果产生Apple你就得产生AppleFactory,如果产生Mushroom,就得产生MushroomFactory.这样就会照成工厂泛滥. 抽象工厂:针对产品系列,可以在谋一系列的产品上进行扩展.缺点是如果产生产品新种,改动就会很多. Spring工厂:可以在产品系列方面既能扩展,又能确定产品品

将一个类声明为Spring的bean的注解小结

1.@Repository,这个注解和@Component.@Controller和我们最常见的@Service注解是一个作用,都可以将一个类声明为一个Spring的Bean.它们的区别到不在于具体的语义上,更多的是在于注解的定位上.之前说过,企业级应用注重分层开发的概念,因此,对这四个相似的注解应当有以下的理解: @Repository注解,对应的是持久层即Dao层,其作用是直接和数据库交互,通常来说一个方法对应一条具体的Sql语句 @Service注解,对应的是服务层即Service层,其作

Spring三 Bean的三种创建方式

创建Bean的三种方式在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法.实际上,Spring支持使用以下三种方式来创建Bean:(1)调用构造器创建Bean(2)调用静态工厂方法创建Bean(3)调用实例工厂方法创建Bean一 构造器创建Bean实例如果不采用构造注入,Spring底层会调用Bean类的无参数构造器来创建实例,因此该类必须要提供无参数的构造器,并且class属性的值就是该B

Spring 装配Bean

Spring 装配Bean 装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介绍 1 :声明Bean Bean的概念:beans 本身是一个大工厂,beans中的每一个bean就等于定义了一个组件,每个组件中就是我们具体的某个功能 1.1 :创建Spring 配置Spring是很重要的,如果没有配置Spring,那么就等于声明了一个空的容器,毫无意义. 通过配置Spring容

Spring装配Bean的过程补充

对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = singletonsingleton:在每个Spring IoC容器中一个bean定义对应一个对象实例. prototype:一个bean定义对应多个对象实例,每次获取bean就是实例化新的bean. 下面说重点了: 当scope=singleton,即默认情况,会在容器初始化时实例化.但我们可以指定Bean节点的l