Spring(二)container

1.CreateBean

bean的实例化方式:
 1, 传统的bean的配置方式
    <bean id="bean的全局唯一标识" class="bean对应的全限定名称" />

工厂类的代码:FactoryBean<要生产的对象>

/**
 * 一个普通的类,只要实现了FactoryBean<T>接口.那么Spring的容器就会认为他是一个工厂类
 */
package com.gxxy.spring03.createfactory;
import org.springframework.beans.factory.FactoryBean;
public class CreateBeanFactory implements FactoryBean<Hello> {
    @Override
    public Hello getObject() throws Exception {
        Hello he = new Hello();
        he.sayHello();
        return he;
    }
    @Override
    public Class<?> getObjectType() {
        return IHelloDAO.class;
    }
    @Override
    public boolean isSingleton() {
        return false;
    }
}

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.xsd">
    <bean  id="createBean" class="com.gxxy.spring03.createfactory.CreateBeanFactory"></bean>   <bean id="bean的全局唯一标识" class="bean对应的全限定名称" />
</beans>

2, 使用静态工厂方法生产bean的方式
    <bean id="bean的全局唯一标识" class="自定义的一个含有创建bean的方法的普通类"
    factory-method="class中的创建bean的方法名称" />
     ? 只要我们使用factory-method了属性, 那么Spring容器就会认为class配置的是一个工厂类

工厂类的代码:

package com.gxxy.spring03.createfactory;

public class CreateBeanFactory {//注意,方法必须为 static
    public static Hello getObject() throws Exception {
        Hello he = new Hello();
        he.sayHello();
        return he;
    }
}

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.xsd">
    <bean  id="createBean" class="com.gxxy.spring03.createfactory.CreateBeanFactory"
    factory-method="getObject"
    ></bean>
</beans>factory-method="class中的创建bean的方法名称"

3, instance

工厂代码:

package com.gxxy.spring03.cinstance;

public class InstanceBeanFactory {
    public static Instance getObject() throws Exception {
        Instance he = new Instance();
        he.sayHello();
        return he;
    }
}

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.xsd">
    <bean  id="instanceBean1" class="com.gxxy.spring03.createfactory.CreateBeanFactory"  factory-method="getObject"></bean>
    instanceBean1的class为工厂类
    <bean id="instanceBean" class="com.gxxy.spring03.cinstance.Instance" factory-bean="instanceBean1" ></bean>
    instanceBean的class为实例化类,factory-bean里面写工厂的ID
</beans>

4, beanFactory

2.BeanScope

  默认情况下,每一个配置在bean中的对象都是单例的, 如果想让它不是单例的:
      在bean的注解中添加一个属性`scope`, 可以限定bean对象的生命作用域
      取值:
        1)singleton: 单例,默认值
            Spring 容器默认启动的时候会创建一个对象
        2)prototype: 原型(模式, 当每一次获取每个对象的时候都是获取的这个对象的镜像),线程安全
            Spring 容器默认启动的时候不会实例化该对象, 只有用的时候才去实例化
            当创建对象之后Spring容器也就不会去管理这个对象, 需要我们自己实现bean的销毁的方法

<?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.xsd">
    <bean  id="ScopeBean"
    class="com.gxxy.spring_03container.scope.ScopeBean"
    scope="prototype"
    >
    </bean>
    <!--
        Scope:
        singleton:单列
        prototype:原型类型(非单例,每次都会创建一个新的对象)
      -->
</beans>
时间: 2024-08-04 00:06:36

Spring(二)container的相关文章

Spring Core Container 源码分析三:Spring Beans 初始化流程分析

前言 本文是笔者所著的 Spring Core Container 源码分析系列之一: 本篇文章主要试图梳理出 Spring Beans 的初始化主流程和相关核心代码逻辑: 本文转载自本人的私人博客,伤神的博客: http://www.shangyang.me/2017/04/01/spring-core-container-sourcecode-analysis-beans-instantiating-process/ 本文为作者的原创作品,转载需注明出处: 源码分析环境搭建 参考 Sprin

Configuring Beans in the Spring IoC Container

Configuring Beans in the Spring IoC Container 这本书对spring bean的配置比较全面. 注:配置类似 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 的时候,xsd的版本号不要带,至于为什么,参考以前转载的老外博客. Problem Spring offers a powerful IoC container to manage the beans that ma

Spring IoC Container and Spring Bean Example Tutorial

Spring Framework is built on the Inversion of Control (IOC) principle. Dependency injection is the technique to implement IoC in applications. This article is aimed to explain core concepts of Spring IoC container and Spring Bean with example program

Spring Core Container 源码分析七:注册 Bean Definitions

前言 原本以为,Spring 通过解析 bean 的配置,生成并注册 bean defintions 的过程不太复杂,比较简单,不用单独开辟一篇博文来讲述:但是当在分析前面两个章节有关 @Autowired.@Component.@Service 注解的注入机制的时候,发现,如果没有对有关 bean defintions 的解析和注册机制彻底弄明白,则很难弄清楚 annotation 在 Spring 容器中的底层运行机制:所以,本篇博文作者将试图去弄清楚 Spring 容器内部是如何去解析 b

框架学习之Spring(二)----AOP and jdbcTemplate

一.AOP aop底层使用动态代理实现 (1)第一种情况,有接口情况,使用动态代理创建接口实现类代理对象 (2)第二种情况,没有接口情况,使用动态代理创建类的子类代理对象 图解:1> 2> 二.AOP操作术语 Joinpoint(连接点):类里面可以被增强的方法,这些方法称为连接点. Pointcut(切入点):所谓切入点是指我们要对那些Joinpoint进行拦截的定义. Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知,通知分为前置通知,后置通知,异常

Spring(二)Bean入门

一.BeanFactory介绍 1.1.Bean: 在Spring技术中是基于组件的 最基本了是最常用的单元 其实实例保存在Spring的容器当中 Bean通常被定义在配置文件当中,Bean实例化由Spring的Ioc容器进行管理,Bean的实例可以通过Beanfactory进行访问,实际上大部分J2EE应用,Bean是通过ApplicationContext来访问的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory强大许多 1.2.BeanF

Spring(二)——IoC

IoC(Inversion of Control)称之为控制反转,指的是在Spring框架的配置文件中声明对象,由框架负责创建对象,这叫做控制反转.实现方式有两种:DI(Dependency Injection)依赖注入,这也是Spring框架的实现方式,主要学习的也是这个:SL(Service Locator)服务器定位器实现方式. DI依赖注入,就是框架不仅创建了对象,而其还负责初始化相关联的对象的过程.从实现方式上也分为3种方式: a,Interface Injection(接口注入):容

Spring(二)之入门示例

任何编程技术,特别是入门示例,通常都是Hello World,在这里我也遵循这个业界公认的原则. 这里我使用的maven项目,大家如果想要演示,建议使用Eclipse(含maven插件)或Idea(含maven插件)或Eclipse+本地安装maven3以上等. 一.导入Maven依赖 这里我将基本所需的依赖都导入进去了. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w

spring(二、bean生命周期、用到的设计模式、常用注解)

Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring容器.这里,我们讲的也是 ApplicationContext中Bean的生命周期.而实际上BeanFactory也是差不多的,只不过处理器需要手动注册.  转载 http://www.cnblogs.com/zrtqsk/p/3735273.html 一.生命周期流程图: Spring Bean的