Java Bean说白了就是java中的class,但是需要满足两个条件:
1.有无参构造函数
2,为成员对象设置了get set方法。
============================================
Bean和Spring的关系:
Bean相当于一个组件,这个组件用来实现一个功能,在Spring中定义Bean的目的是给你一个简单便捷的方法来调用一个组件,实现你需要的功能。
Spring可以看做是一个一个Bean组成的工厂(Factory),Bean用在Spring容器中,方便Spring容器来管理。
===========================================
Bean的属性:
1,ID,标志该Bean的名称,通过factory.getBean("id")来获得该Bean的实例。
2,class,该bean的类路径。有包名+类名组成,如 com.baidu.tieba.user.userLogin
3,Signleton,单例模式,默认为true,每次getBean(“id”)时获取的都是同一个实例,如果设置为false,即原型模式,则每次获取的是新创建的实例。
4,Init-method : 在bean实例化后要调用的方法(bean里定义好的方法)。
5,Destroy-method : bean从容器里删除之前要调用的方法。
6,Autowire : 其属性要通过何种方法进行属性的自动装配。
其中Id和Class是必须的属性,其它则可以缺省。
例如如果设置了autowire的值,则表明需要自动装配,否则是手动装配。
scope是bean的生命周期,有五种生命周期。参见Bean的作用域及生命周期
scope="prototype",等同于 Signleton="false",Bean默认是单例模式,通过设置scope="prototype",这样每次调用一个Action,都创建一个新的实例。保护数据安全。
不过在前台页面,需要数据传递的时候(这里看的很模糊,大概是这个意思,在某些时候需要使用原型模式)。
=====================举个栗子========================
<bean id="userAction" class="com.neusoft.gmsbs.gms.user.action.UserAction" scope="prototype"> <property name="userBO" ref="userBO" /> </bean> <bean id="userBO" class="com.neusoft.gmsbs.gms.user.bo.impl.UserBOImpl"> <property name="userDAO" ref="userDAO" /> </bean> <bean id="userDAO" class="com.neusoft.gmsbs.gms.user.dao.impl.UserDAOImpl"> <property name="sqlMapClient" ref="sqlMapClient"></property> </bean>
id相当于定义了你的这个bean的别名,如果你需要他的话只要关联这个别名就可以了,也就相当于下面的<property name="userBO" ref="userBO" />一样,在你的userAction中需要实现userBO这个功能,我关联它,那么在action中set注入就可以使用了!