zoukankan      html  css  js  c++  java
  • Spring入门第十三课

    通过FactoryBean来配置Bean

    package logan.spring.study.factoryBean;
    
    public class Car {
        
        private String brand;
        private int price;
        public String getBrand() {
            return brand;
        }
        public void setBrand(String brand) {
            this.brand = brand;
        }
        public int getPrice() {
            return price;
        }
        public void setPrice(int price) {
            this.price = price;
        }
        @Override
        public String toString() {
            return "Car [brand=" + brand + ", price=" + price + "]";
        }
        public Car(String brand, int price) {
            super();
            this.brand = brand;
            this.price = price;
        }
    }
    package logan.spring.study.factoryBean;
    
    import org.springframework.beans.factory.FactoryBean;
    //自定义的FactoryBean需要实现FactoryBean接口
    public class CarFactoryBean implements FactoryBean<Car>{
        
        private String brand;
        
        public void setBrand(String brand) {
            this.brand = brand;
        }
    
        //返回bean的对象
        @Override
        public Car getObject() throws Exception {
            // TODO Auto-generated method stub
            return new Car(brand,500000);
        }
    
        //返回Bean的类型
        @Override
        public Class<?> getObjectType() {
            // TODO Auto-generated method stub
            return Car.class;
        }
    
        
        @Override
        public boolean isSingleton() {
            // TODO Auto-generated method stub
            return true;
        }
    
    }

    下面是配置文件

    <?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">
        <!-- 通过FactoryBean来配置Bean的实例 
        class:指向FactoryBean的全类名
        property:配置FactoryBean的属性
        但实际上返回的实例却是FactoryBean的getObject()方法返回的实例
        -->
        <bean id="car" class="logan.spring.study.factoryBean.CarFactoryBean">
            <property name="brand" value="BMW"></property>
        </bean>
    
    </beans>

    下面是输出结果:

    五月 21, 2017 7:44:58 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7aec35a: startup date [Sun May 21 19:44:58 CST 2017]; root of context hierarchy
    五月 21, 2017 7:44:58 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [beans-beanfactory.xml]
    Car [brand=BMW, price=500000]
  • 相关阅读:
    生成前N个自然数随机置换的3个程序
    网络流媒体协议之——RTSP协议
    海思屏幕HAL代码解析
    事件路由
    hi3559v100 sdk中双系统AMP架构的初步了解
    LCD RGB 控制技术 时钟篇(下)【转】
    liteos C++支持(十七)
    liteos MMU(十八)
    APP接口做什么?
    APP如何进行通信的
  • 原文地址:https://www.cnblogs.com/LoganChen/p/6885756.html
Copyright © 2011-2022 走看看