构造Bean的三种方法

Spring

JAVA Bean和Spring Bean

  • bean:在计算术语中,称为软件中可以复用的组件
  • spring bean:由spring IOC容器创建并管理的java对象
  • JavaBean:在java应用中可以复用的对象,需要以下几个条件:
  1. 类的声明public修饰
  2. 需要有无参的构造方法
  3. 有一些私有的成员变量,要求小写字母打头,且有getter和setter方法
  4. 实现序列化接口,serializable接口

创造Bean的三种方法

方法一:构造器实例化Bean


如果bean标签中没有其他内容,要求class属性指定的类型必要要有无参构造方法

<bean id="userDaoImpl" class="com.fjr.creation.UserDaoImpl"></bean>

方法二:通过普通工厂创建bean

第一步,将工厂类本身加入ioc容器
-->
<bean id="userDaoFactory" class="com.fjr.creation.UserDaoFactory"></bean>
<!--    factory-bean指定刚由ioc容器创建工厂bean
        factory-method指定的该工程的工厂方法
 -->
<bean id="userDao" factory-bean="userDaoFactory" factory-method="creatUserDao"></bean>

方法三:通过静态工厂创建bean

<--通过静态工厂创建bean
   class属性指定静态工厂的类,同时factory-method指定工厂方法
-->

   <bean id="userDao3" class="com.fjr.creation.UserDaoStaticFactory" factory-method="creatUserDao"></bean>

实现三种创造Bean的方法:

1.接口文件UserDao:
public interface UserDao {
    void  queryAll();
}
2.方法一的java类:
public class UserDaoImpl implements UserDao {

    public UserDaoImpl(){}

    @Override
    public void queryAll() {
        System.out.println("查询了数据库了");
    }
}
3.方法二的java类:
/**
 * 模拟一个UserDao的工厂,可能存在于第三方jar中
 *
 */
public class UserDaoFactory {

    public UserDao creatUserDao(){
     return new UserDaoImpl();
    }
}
4.方法三的java类:
/**
 * 模拟一个UserDao的静态工厂,可能存在于第三方jar中
 *
 */
public class UserDaoStaticFactory {

    static public UserDao creatUserDao(){
     return new UserDaoImpl();
    }
}
5.Main函数:
public static void main(String[] args) {
//创建IOC容器,此时IOC容器创建配置文件中的所有bean对象
    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("creation/spring.xml");
//调用方法一:
    UserDao userDao1= (UserDao) applicationContext.getBean("userDaoImpl");
    userDao1.queryAll();
//调用方法二:
    UserDao userDao2= (UserDao) applicationContext.getBean("userDao");
    userDao2.queryAll();
//调用方法三:
    UserDao userDao3=applicationContext.getBean("userDao3",UserDao.class);
    userDao3.queryAll();
}
方法三:
    UserDao userDao3=applicationContext.getBean("userDao3",UserDao.class);
    userDao3.queryAll();
}
  • 结果:
    在这里插入图片描述
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值