博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring中四种实例化bean的方式
阅读量:6587 次
发布时间:2019-06-24

本文共 3304 字,大约阅读时间需要 11 分钟。

本文主要介绍四种实例化bean的方式(注入方式) 或者叫依赖对象实例化的四种方式。上面的程序,创建bean 对象,用的是什么方法 ,用的是构造函数的方式 (Spring 可以在构造函数私有化的情况下把类对象创建出来)

常用的创建方式有以下四种:

1) setter 方法

2) 构造函数

3) 静态工厂

4) 实例工厂

一、用 setter 方式

public interface IUserDao {                void addUser();                void delUser();                void updateUser();            }                        public class UserDaoImpl implements IUserDao {                public void addUser() {                    System.out.println("addUser方法被调用了");                }                        public void delUser() {                    System.out.println("delUser方法被调用了");                }                        public void updateUser() {                    System.out.println("updateUser方法被调用了");                }            }                        public class UserAction {                    private IUserDao dao; //dao是一个依赖对象,要由springg进行管理,要生成 get set 方法                            public void execute(){                            dao.addUser();                            dao.updateUser();                            dao.delUser();                    }                }
 
//配置文件
//引用的是下面的名称
//测试ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");UserAction action=(UserAction)ctx.getBean("userAction_name");action.execute();

二、构造函数

public class UserAction {       //public UserAction(){} 可以保保留一个无参的构造函数                       //这是几个依赖对象,不用生成get set方法了       private UserInfo user;       private String school;       private IUserDao dao;                        //希望Spring 由构造函数注入依赖对象       public UserAction(IUserDao dao,UserInfo user,String school){              this.dao=dao;              this.school=school;              this.user=user;              }                                   public void execute(){              dao.addUser();              dao.updateUser();              dao.delUser();                                  System.out.println(user);              System.out.println(school);}
 
 
//配置文件
/*也可以指定 索引和 type 属性 , 索引和type 都可以不指定
如果是接口,就不能指定是实现类的类型
*/
 
//测试ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");UserAction action=(UserAction)ctx.getBean("userAction_name");action.execute();

三、静态工厂方式

//工厂,用来生成dao的实现类public class UserDaoFactory {public static IUserDao createUserDaoInstance(){       return new UserDaoImpl();       }}           public class UserAction {       private IUserDao dao;//使用工厂方式注值,也要生成set方法       public void execute(){              dao.addUser();              dao.updateUser();              dao.delUser();}                public void setDao(IUserDao dao) {              this.dao = dao;              }    }
 
 
//配置文件 
 
//测试ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");UserAction action=(UserAction)ctx.getBean("userAction_name");action.execute();

四、实例工厂

//工厂 =>public class UserDaoFactory {//这个方法不是静态的public  IUserDao createUserDaoInstance(){        return new UserDaoOracleImpl();        }}
 
 
//配置文件 

转载于:https://www.cnblogs.com/7758521gorden/p/8149399.html

你可能感兴趣的文章
JAVA关键字 notice
查看>>
要不要去读研究生,希望以后不要再有人问我这个问题了
查看>>
OOP学习笔记
查看>>
web.xml 相关 listener filter servlet
查看>>
MyEclipse注册机
查看>>
Arrays类的六个基本方法
查看>>
jeecg开源框架 我看行!!!
查看>>
ListCtrl排序扩展类--CSortListCtrl
查看>>
关于CentOS-6.6-x86_64-bin-DVD安装vsftp问题
查看>>
zabbix安装过程中遇到的问题
查看>>
postgresql 角色 用户区别
查看>>
ArrayList和LinkedList内部实现、区别、使用场景
查看>>
1)gitlab+jenkins自动化发布;gitlab搭建
查看>>
Git 常用命令详解(二)
查看>>
Spring数据源的配置:c3p0、dbcp、druid
查看>>
区块链100讲:从村里的账本来看什么是区块链
查看>>
第五次课
查看>>
跟我一起学docker(17)--多节点mesos集群
查看>>
Android 的生命周期深入剖析
查看>>
AI行业强者愈强?Tesra超算网络助力中小AI开发企业!
查看>>