Spring基于xml/Annotation(注解)/自动装配

本文详细介绍了Spring中三种Bean装配方式:基于XML的setter注入和构造注入,基于Annotation的@Component、@Repository、@Service、@Controller及@Autowired、@Resource的使用,以及自动装配的概念和配置。
摘要由CSDN通过智能技术生成

     一、Spring基于XML装配Bean

               Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配基于 Annotation 的 Bean 装配自动装配等。
               Spring 基于 XML 的装配通常采用两种实现方式,即设值注入(Setter Injection)和构造注入(Constructor Injection)。本节将讲解如何在XML配置文件中使用这两种注入方式。
               在 Spring 实例化 Bean 的过程中,首先会调用默认的构造方法实例化 Bean 对象,然后通过 Java 的反射机制调用 setXxx() 方法进行属性的注入。因此,设值注入要求一个 Bean 的对应类必须满足以下两点要求。

              A.必须提供一个默认的无参构造方法。

              B.必须为需要注入的属性提供对应的 setter 方法。

             使用设值注入时,在 Spring 配置文件中,需要使用 <bean> 元素的子元素 <property> 元素为每个属性注入值。

             而使用构造注入时,在配置文件中,主要使用 <constructor-arg> 标签定义构造方法的参数,可以使用其 value 属性(或子元素)设置该参数的值。

             下面通过案例演示基于XML方式的Bean对不同类型数据的装配。

             1.创建项目,完善结构,导入依赖

             2.创建ClassBean类

package com.wangxing.springdemo6;

/**
 * 练习设置注入(set注入)(property)和构造注入(constructio-arg)
 */
public class ClassBean {
    private String classcode;
    private String classname;

    public String getClasscode() {
        return classcode;
    }

    public void setClasscode(String classcode) {
        this.classcode = classcode;
    }

    public String getClassname() {
        return classname;
    }

    public void setClassname(String classname) {
        this.classname = classname;
    }
}

 3.创建StudentBean类

package com.wangxing.springdemo6;

import java.util.*;

public class StudentBean {
    //基本数据类型
    private int intVal;
    private double doubleVal;
    private char charVal;
    private boolean booleanVal;
    //String
    private String stringVal;
    //时间日期型
    private Date dateVal;
    //对象型
    private ClassBean classBeanVal;
    //数组
    private String[] stringArrayVal;
    private ClassBean[] classBeansVal;
    //List
    private List<String> stringListVal;
    private List<ClassBean> classBeanListVal;
    //Set
    private Set<String> stringSetVal;
    private Set<ClassBean> classBeanSetVal;

    public Set<String> getStringSetVal() {
        return stringSetVal;
    }

    public void setStringSetVal(Set<String> stringSetVal) {
        this.stringSetVal = stringSetVal;
    }

    public Set<ClassBean> getClassBeanSetVal() {
        return classBeanSetVal;
    }

    public void setClassBeanSetVal(Set<ClassBean> classBeanSetVal) {
        this.classBeanSetVal = classBeanSetVal;
    }

    //Map
    private Map<String,String> stringMapVal;
    private Map<String,ClassBean> stringClassBeanMap;
    //Properties
    private Properties propertiesVal;

    public int getIntVal() {
        return intVal;
    }

    public void setIntVal(int intVal) {
        this.intVal = intVal;
    }

    public double getDoubleVal() {
        return doubleVal;
    }

    public void setDoubleVal(double doubleVal) {
        this.doubleVal = doubleVal;
    }

    public char getCharVal() {
        return charVal;
    }

    public void setCharVal(char charVal) {
        this.charVal = charVal;
    }

    public boolean isBooleanVal() {
        return booleanVal;
    }

    public void setBooleanVal(boolean booleanVal) {
        this.booleanVal = booleanVal;
    }

    public String getStringVal() {
        return stringVal;
    }

    public void setStringVal(String stringVal) {
        this.stringVal = stringVal;
    }

    public Date getDateVal() {
        return dateVal;
    }

    public void setDateVal(Date dateVal) {
        this.dateVal = dateVal;
    }

    public ClassBean getClassBeanVal() {
        return classBeanVal;
    }

    public void setClassBeanVal(ClassBean classBeanVal) {
        this.classBeanVal = classBeanVal;
    }

    public String[] getStringArrayVal() {
        return stringArrayVal;
    }

    public void setStringArrayVal(String[] stringArrayVal) {
        this.stringArrayVal = stringArrayVal;
    }

    public ClassBean[] getClassBeansVal() {
        return classBeansVal;
    }

    public void setClassBeansVal(ClassBean[] classBeansVal) {
        this.classBeansVal = classBeansVal;
    }

    public List<String> getStringListVal() {
        return stringListVal;
    }

    public void setStringListVal(List<String> stringListVal) {
        this.stringListVal = stringListVal;
    }

    public List<ClassBean> getClassBeanListVal() {
        return classBeanListVal;
    }

    public void setClassBeanListVal(List<ClassBean> classBeanListVal) {
        this.classBeanListVal = classBeanListVal;
    }

    public Map<String, String> getStringMapVal() {
        return stringMapVal;
    }

    public void setStringMapVal(Map<String, String> stringMapVal) {
        this.stringMapVal = stringMapVal;
    }

    public Map<String, ClassBean> getStringClassBeanMap() {
        return stringClassBeanMap;
    }

    public void setStringClassBeanMap(Map<String, ClassBean> stringClassBeanMap) {
        this.stringClassBeanMap = stringClassBeanMap;
    }

    public Properties getPropertiesVal() {
        return propertiesVal;
    }

    public void setPropertiesVal(Properties propertiesVal) {
        this.propertiesVal = propertiesVal;
    }

}

4.创建配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--创建SimpleDateFormat对象-->
    <!--SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd")-->
    <bean id="simpleDateFormat" class="java.text.SimpleDateFormat">
        <!--构造方法注入-
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值