首页 > 其他分享 >Bean的实例化

Bean的实例化

时间:2023-07-13 10:34:19浏览次数:26  
标签:UserDao dao Bean 实例 dang import public

Bean实例化

一. 构造方法进行实例化

bookDaoImpl
package dang.dao.impl;

import dang.dao.BookDao;

public class BookDaoImpl implements BookDao {

    public BookDaoImpl() {
        System.out.println("book dao constructor is running ....");
    }

    public void save() {
        System.out.println("book dao save ...");
    }

}

配置
<!--方式一:构造方法实例化bean-->
    <bean id="bookDao" class="dang.dao.impl.BookDaoImpl"/>

二. 静态工厂实例化Bean(了解)

AppForInstanceOrder
package dang;

import dang.dao.OrderDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AppForInstanceOrder {
    public static void main(String[] args) {
        //通过静态工厂创建对象
//        OrderDao orderDao = OrderDaoFactory.getOrderDao();
//        orderDao.save();


        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        OrderDao orderDao = (OrderDao) ctx.getBean("orderDao");

        orderDao.save();

    }
}

ordeDaoFactory
package dang.factory;

import dang.dao.OrderDao;
import dang.dao.impl.OrderDaoImpl;

//静态工厂创建对象
public class OrderDaoFactory {
    public static OrderDao getOrderDao(){
        System.out.println("factory setup....");
        return new OrderDaoImpl();
    }
}

配置
<bean id="orderDao" class="dang.factory.OrderDaoFactory" factory-method="getOrderDao"/>

三. 使用实例工厂实例化Bean

AppForInstanceUser
package dang;

import dang.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AppForInstanceUser {
    public static void main(String[] args) {
//        //创建实例工厂对象
//        UserDaoFactory userDaoFactory = new UserDaoFactory();
//        //通过实例工厂对象创建对象
//        UserDao userDao = userDaoFactory.getUserDao();
//        userDao.save();


        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao=(UserDao)ctx.getBean("userDao");
        userDao.save();

    }
}

UserDaoFactory
package dang.factory;

import dang.dao.UserDao;
import dang.dao.impl.UserDaoImpl;

//实例工厂创建对象
public class UserDaoFactory {
    public UserDao getUserDao(){
        return new UserDaoImpl();
    }
}

配置
<bean id="userFactory" class="dang.factory.UserDaoFactory"/>

<bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>

四. FactoryBean

UserDaoFactoryBean
package dang.factory;

import dang.dao.UserDao;
import dang.dao.impl.UserDaoImpl;
import org.springframework.beans.factory.FactoryBean;

//FactoryBean创建对象
public class UserDaoFactoryBean implements FactoryBean<UserDao> {
    //代替原始实例工厂中创建对象的方法
    public UserDao getObject() throws Exception {
        return new UserDaoImpl();
    }

    public Class<?> getObjectType() {
        return UserDao.class;
    }

}

<details>
<summary>配置</summary>

</details>

配置
<bean id="userDao" class="dang.factory.UserDaoFactoryBean"/>

标签:UserDao,dao,Bean,实例,dang,import,public
From: https://www.cnblogs.com/cpdd-dc/p/17549728.html

相关文章

  • 若依微服务使用openfeign ,写了一个接口,但是其他项目引入的时候显示找不到这个Bean:Coul
    启动报错:org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'tokenController':Unsatisfieddependencyexpressedthroughfield'sysLoginService';nestedexceptionisorg.springframework.beans.fa......
  • 数学归纳法证明贪心实例
    1.选择不相交区间问题(具体见一本通提高篇P4)假设已经选择的区间是最优的方案的一部分,下面考虑如何选择会使方案达到最优。因为是按照结束时间升序排序的,如果我们不选择当前这一个合法的(设为A)而是去选择之后的合法的(设为B),那么无论最后的方案是怎样的,都可以将B换成A从而符合题意。......
  • 4th-code实例
       前面章节中我们已经学会了如何用Python输出"Hello,World!",英文没有问题,但是如果你输出中文字符"你好,世界"就有可能会碰到中文编码问题。Python文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/pythonprint("你好,世界")以上程序执行输出结果为:File"test.py",......
  • service 无法注入bean问题
    Noqualifyingbeanoftype'com.unqd.api.weituo.service.IamCustomerService'available:expectedatleast1beanwhichqualifiesasautowirecandidate.Dependencyannotations:{@org.springframework.beans.factory.annotation.Autowired(required=true......
  • Java实现浏览器端大文件分片上传实例解析
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • Task的基本概念、使用方法和实例代码
    基本概念是一种用于异步编程的概念。Task的重要特点是可以在后台执行方法或操作,而不会阻塞主线程或UI线程。封装的异步操作,表示执行的操作正在进行。可以表示一个方法的返回值或者表示执行的操作已经完成。Task类的主要成员属性:TaskStatus、IsCanceled、IsCompleted、IsFa......
  • 数字码头系统APP开发实例之会员端功能模块介绍
    数字码头是一款聚合性电商系统,目前开发的数字码头APP1.0版本包含的电商系统、积分系统、看广告系统、卷轴模式系统、签到模块组成。下面我就数字码头系统开发的功能模块,和大家展开探讨,本文主要的内容是主题模块架构和APP闭环商业逻辑的分享。任务一个商业模式系统都要围绕用户激励......
  • JVM(八)对象的实例化内存布局与访问定位
    JVM(八)对象的实例化内存布局与访问定位1对象创建的方式new变形1:Class的newInstance(),即反射Class的newInstance反射的使用较为苛刻,要求只能调用空参的构造器,而且权限必须是public这种方式再jdk9中被标记为过时了Constructor的newInstance(),也属于是反射可以调......
  • 注解开发实现为第三方bean注入资源
     简单类型直接注入,使用Value注解 引用类型使用形参注入,只要在包下存在这个bean,容器就会自动装配注入,而且使用的是按类型装配......
  • 注解开发管理第三方bean
    上图是吧第三方bean直接写进配置类中 不建议使用上图的书写方式,建议独自创建一个类来管理第三方bean 两种方式来管理第三方bean推荐使用第一种导入式,第二种扫描式不容易看出,到底导入的是哪个bean,因为它是扫描的配置所在的包第一种导入式直接使用Import注解手动导入,更方便......