一、使用java类来配置bean,前面都是使用xml来配置bean
- @Configuration 用于修饰一个Java类 为配置类
- * @Bean:修饰一个方法,将该方法的返回值,定义成容器中的一个bean;
- * @Value:修饰一个filed,用于给该字段 赋值
- * @import:修饰一个Java配置类,用于向当前配置类中导入其他 Java配置类
- * @Scope:修饰一个方法,定义该方法返回的Bean的生命域
- * @Lazy:修饰一个方法,指定该方法返回的对应Bean是否需要延迟初始化
- * @DepondOn:修饰一个方法,指定在初始化对应方法返回Bean之前,初始化指定Bean
1.不需要为工厂类配置bean; 2.可以直接使用class指定工程类
- <bean id="stoneAxe_sf" class="cn.sh.springmvc_java.factory.AxeFactory" factory-method="getAxe" >
- <constructor-arg value="stone"/>
- <property name="name" value="小石头"/>
- </bean>
对应的实体类:
- public class AxeFactory {
- public static Axe getAxe(String arg){
- if(arg.equals("stone")){
- return new StoneAxe();
- }else if(arg.equals("steel")){
- return new SteelAxe();
- }
- return null;
- }
- }
- public class PeopleFactory {
- public People getPeople(String type){
- if(type.equalsIgnoreCase("chin")){
- return new China();
- }else{
- return new American();
- }
- }
- }
实例化:
- <!-- 使用 实例工厂 创建Bean
- 1:必须将工厂配置成一个Bean,因为 工厂需要实例化
- 2:必须使用 factory-bean 指定 工厂bean
- -->
- <bean id="peopleFactory" class="cn.sh.springmvc_java.factory.PeopleFactory"/>
- <bean id="china" factory-bean="peopleFactory" factory-method="getPeople">
- <constructor-arg value="chin"/>
- </bean>
- <bean id="american" factory-bean="peopleFactory" factory-method="getPeople" scope="prototype" init-method="init" destroy-method="close">
- <constructor-arg value="ame"/>
- </bean>