• Spring-bean


    bean的基本配置

    bean的基本配置
    在这里插入图片描述
    bean的别名配置
    在这里插入图片描述

    bean作用范围配置

    注意spring创建的bean默认是一个单例实例。类似于new的对象都是一个对象,内存地址都一样。
    用scope可以配置 是否单例。

    思考:为什么bean默认为单例??

    Bean实例化

    1.构造方法

    2.静态工厂

    在这里插入图片描述

    step1:创建静态工厂

    public class BookDaoFactory {
        public  static BookDao getBookDao(){
            return  new BookDaoImpl();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    测试对象是否创建成功

    public class APP3 {
        public static void main(String[] args) {
            BookDao bookDao= BookDaoFactory.getBookDao();
            bookDao.save();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    step2:添加配置文件

    applicationContext.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="bookDao" class="com.itheima.factory.BookDaoFactory" factory-method="getBookDao"></bean>
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    step3:run APP3.java

    在这里插入图片描述

    public class APP3 {
        public static void main(String[] args) {
    //        BookDao bookDao= BookDaoFactory.getBookDao();
    //        bookDao.save();
    
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取Bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
            BookDao bookDao=(BookDao) ctx.getBean("bookDao");
            bookDao.save();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    3.实例工厂

    在这里插入图片描述

    step1:实例工厂

    public class BookDaoFactory {
        public   BookDao getBookDao(){
            return  new BookDaoImpl();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    小run一下APP.java看看能不能跑出来

    public class APP3 {
        public static void main(String[] args) {
            BookDaoFactory bookDaoFactory= new BookDaoFactory();
            BookDao bookDao=bookDaoFactory.getBookDao();
            bookDao.save();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    step2:修改配置

    <?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-->
        <bean id="bookDaoFactory" class="com.itheima.factory.BookDaoFactory"/>
        <bean id="bookDao" factory-method="getBookDao" factory-bean="bookDaoFactory"/>
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    step3:run APP3.java

    public class APP3 {
        public static void main(String[] args) {
    
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取Bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
            BookDao bookDao=(BookDao) ctx.getBean("bookDao");
            bookDao.save();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.FactoryBean(方式3的变种) ※

    在这里插入图片描述

    step1:创建FactoryBean

    在这里插入图片描述

    BookDaoFactoryBean.java

    public class BookDaoFactoryBean implements FactoryBean<BookDao> {
        //代替原始实例工厂中创建对象的方法
        public BookDao getObject() throws Exception {
            return new BookDaoImpl();
        }
    
        public Class<?> getObjectType() {
            return BookDao.class;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    step2:配置文件

    <?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="bookDao" class="com.itheima.factory.BookDaoFactoryBean"/>
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    step3:run APP3.java

    public class APP3 {
        public static void main(String[] args) {
    
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取Bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
            BookDao bookDao=(BookDao) ctx.getBean("bookDao");
            bookDao.save();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

  • 相关阅读:
    C++ 求幂函数pow()的输出问题
    Docker入门教程(详细)
    ZKP6.1 Discrete-log-based Polynomial Commitments (Preliminary)
    【Git】Git 基础
    推理还原的干货
    Springboot疫苗接种管理系统毕业设计-附源码191451
    MDM现代设备管理解决方案如何保护企业设备安全,保证员工工作体验?
    【MAX78000基础案例演示】
    【CAN总线】从数字设计的角度分析CAN协议1—CAN概述
    Vue3中的状态驱动的动态CSS、注册组件
  • 原文地址:https://blog.csdn.net/weixin_42888638/article/details/125465308