Spring
JAVA Bean和Spring Bean
- bean:在计算术语中,称为软件中可以复用的组件
- spring bean:由spring IOC容器创建并管理的java对象
- JavaBean:在java应用中可以复用的对象,需要以下几个条件:
- 类的声明public修饰
- 需要有无参的构造方法
- 有一些私有的成员变量,要求小写字母打头,且有getter和setter方法
- 实现序列化接口,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();
}
- 结果: