spring Bean的获取与注入

#spring Bean的获取与注入
##一、spring Bean的注入
准备:

  1. Bean Students
public class Students {
    private int sid;
    private String username;
    private String gender;
    private Date birthday;
    public Students(int sid, String username, String gender, Date birthday) {
        this.sid = sid;
        this.username = username;
        this.gender = gender;
        this.birthday = birthday;
    }
    public Students() {
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Students{" +
                "sid=" + sid +
                ", username='" + username + '\'' +
                ", gender='" + gender + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}
  1. convert包下自定义字符串转日期MyDateConvert
public class MyDateConvert extends PropertyEditorSupport {
    /**
     * 字符串格式
     * yyyy-MM-dd yyyy/MM/dd
     * 或是其他 应由外部传入
     */
    private String format;

    public MyDateConvert(String format) {
        this.format = format;
    }
    public String getFormat() {
        return format;
    }

    public void setFormat(String format) {
        this.format = format;
    }

    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        SimpleDateFormat sdf = new SimpleDateFormat(this.format);
        try {
            this.setValue(sdf.parse(text));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
  1. convert包下自定义了一个注册器MyCustomDateEditorRegistrar
public class MyCustomDateEditorRegistrar implements PropertyEditorRegistrar {

    private String format;

    public String getFormat() {
        return format;
    }

    public void setFormat(String format) {
        this.format = format;
    }

    @Override
    public void registerCustomEditors(PropertyEditorRegistry registry) {
        registry.registerCustomEditor(java.util.Date.class, new MyDateConvert(format));
    }

}
  1. applicationContext.xml中配置String转Date的bean
  <!-- 使 Spring转换为java.util.Date-->
    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="propertyEditorRegistrars">
            <list>
                <bean class="edu.xufe.convert.MyCustomDateEditorRegistrar">
                    <property name="format" value="yyyy-MM-dd"></property>
                </bean>
            </list>
        </property>
    </bean>
  1. 开启包扫描 扫描根包 edu
    <context:annotation-config/>
    <context:component-scan base-package="edu"/>
  1. 属性注入
    <bean id="student" class="edu.xufe.entity.Students">
        <property name="sid" value="1605990418"></property>
        <property name="username" value="李四"></property>
        <property name="gender" value="男"></property>
        <property name="birthday">
            <bean factory-bean="dateFormat" factory-method="parse">
                <constructor-arg value="1996-11-28"/>
            </bean>
        </property>
    </bean>
  1. 构造方法注入
    <bean id="zhangsan1" class="edu.xufe.entity.Students">
        <constructor-arg name="sid" value="1605990418"></constructor-arg>
        <constructor-arg name="username" value="张三1"></constructor-arg>
        <constructor-arg name="gender" value="女"></constructor-arg>
        <constructor-arg name="birthday" value="1996-11-28"></constructor-arg>
    </bean>
  1. 注解注入

1.bean加注解@Compent(“bean name”)
2.属性加注解@Value(“值”)

@Component("zhangliu")
public class Students {
    @Value("1605990418")
    private int sid;
    @Value("赵六")
    private String username;
    @Value("女")
    private String gender;
    @Value("1996-11-20")
    private Date birthday;

    public Students(int sid, String username, String gender, Date birthday) {
        this.sid = sid;
        this.username = username;
        this.gender = gender;
        this.birthday = birthday;
    }
    public Students() {
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Students{" +
                "sid=" + sid +
                ", username='" + username + '\'' +
                ", gender='" + gender + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

##二、spring getBean的方式

  1. getBean(“id | name”);

根据id或者name去查找bean 缺点需要强制类型转换

  1. getBean(Class);

根据类型去查找bean 缺点bean是必须唯一

  1. getBean(“id | name”,getBean(“id | name”));

在指定类型的同时按照id或name去查找bean

  1. getBean(“id | name”,Object[]);

工厂方法 Object[]传入参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值