千家信息网

Spring中Bean的装配方法是什么

发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,本篇内容主要讲解"Spring中Bean的装配方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring中Bean的装配方法是什么"吧!前言Be
千家信息网最后更新 2024年10月25日Spring中Bean的装配方法是什么

本篇内容主要讲解"Spring中Bean的装配方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring中Bean的装配方法是什么"吧!

前言

Bean的装配可以理解为依赖关系注入,Bean的装配方式即Bean依赖注入的方式。Spring容器支持多种形式的Bean的装配方式,如基于XML的装配、基于注解(Annotation)的装配和自动装配(其中最常用的是基于注解的装配),本文章将主要讲解着三种装配方式的使用。

基于XML的装配

方式一:设置注入

条件:①Bean类必须有一个无参构造方法;②Bean类必须为属性提供setter方法。

在配置文件中,使用元素来为每个属性注入值

方式二:构造注入

条件:Bean类必须提供有参构造方法

在配置文件中,使用元素来为参数注入值

具体实现步骤如下

  1. 创建Java类User,提供有参、无参构造方法以及属性setter方法;

package com.ssm.assemble;import java.util.List;public class User {    private String username;    private Integer password;    private List list;        /**     * 1.使用构造注入     * 1.1提供带所有参数的有参构造方法。     */    public User(String username, Integer password, List list) {        super();        this.username = username;        this.password = password;        this.list = list;    }        /**     * 2.使用设值注入     * 2.1提供默认空参构造方法 ;     * 2.2为所有属性提供setter方法。     */    public User() {        super();    }    public void setUsername(String username) {        this.username = username;    }    public void setPassword(Integer password) {        this.password = password;    }    public void setList(List list) {        this.list = list;    }    @Override    public String toString() {        return "User [username=" + username + ", password=" + password +                ", list=" + list + "]";    }}
  1. 创建Spring配置文件beans1.xml,使用以上两种方式装配Bean;

                                                              "constructorvalue1"                "constructorvalue2"                                                                                              "setlistvalue1"                "setlistvalue2"                        
  1. 创建测试类XmlBeanAssembleTest,测试程序;

package com.ssm.assemble;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class XmlBeanAssembleTest {    public static void main(String[] args) {        // 定义配置文件路径        String xmlPath = "beans1.xml";        // 加载配置文件        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);        // 构造方式输出结果        System.out.println(applicationContext.getBean("user1"));        // 设值方式输出结果        System.out.println(applicationContext.getBean("user2"));    }}
  1. 运行效果。

基于注解的装配

  由于基于XML的装配可能会导致XML配置文件过于臃肿,给后续的维护和升级带来一定的困难。因此,Spring提供了对Annotation(注解)技术的全面支持。

具体实现步骤如下

  1. 创建数据访问(Dao)层接口UserDao;

package com.ssm.annotation;public interface UserDao {    public void save();}
  1. 创建数据访问(UserDao)层接口的实现类UserDaoImpl,并且在实现类前添加对应的注解@Repository("userDao");

package com.ssm.annotation;import org.springframework.stereotype.Repository;@Repository("userDao")//@Repository("userDao")相当于配置文件中的:public class UserDaoImpl implements UserDao{    @Override    public void save() {        System.out.println("userdao...save...");    }}
  1. 创建业务(Service)层接口UserService;

package com.ssm.annotation;public interface UserService {    public void save();}
  1. 创建业务(Service)层接口的实现类UserServiceImpl并添加属性对象UserDao的setter方法,并在实现类前添加对应的注解@Service("userService")和在类里面方法前添加对应的注解 @Resource(name="userDao");

package com.ssm.annotation;import javax.annotation.Resource;import org.springframework.stereotype.Service;@Service("userService")//相当于配置文件中的:public class UserServiceImpl implements UserService{    @Resource(name="userDao")    //当于配置文件中的:    private UserDao userDao;     public void save() {        //调用userDao中的save方法        this.userDao.save();        System.out.println("userservice....save...");    }    public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }}
  1. 创建控制(Controller)层Java类UserController,并在实现类前添加对应的注解@Controller("userController")和在类里面方法前添加对应的注解 @Resource(name="userService");

package com.ssm.annotation;import javax.annotation.Resource;import org.springframework.stereotype.Controller;@Controller("userController")//相当于配置文件中的:public class UserController {    @Resource(name="userService")    //当于配置文件中的:    private UserService userService;    public void save(){        this.userService.save();        System.out.println("userController...save...");    }    public void setUserService(UserService userService) {        this.userService = userService;    }}
  1. 创建Spring配置文件beans2.xml,开启注解和定义Bean;

                
  1. 创建测试类AnnotationAssembleTest,测试程序;

package com.ssm.annotation;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class AnnotationAssembleTest {    public static void main(String[] args) {        // 定义配置文件路径        String xmlPath = "beans2.xml";        // 加载配置文件        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);        // 获取UserController实例        UserController userController = (UserController) applicationContext.getBean("userController");        // 调用UserController中的save()方法        userController.save();    }}
  1. 运行效果。

自动装配

所谓自动装配,就是将一个Bean自动的注入到到其他Bean的Property中。 Spring的元素中包含一个autowire属性,我们可以通过设置autowire的属性值来自动装配Bean。autowire属性有5个值,其值及说明下表所示:

具体实现步骤如下

这里只需要在基于注解的装配配置文件(beans.xml)中把注解方式换成自动装配即可,具体代码如下:

                                    

运行效果和基于注解的装配一样

到此,相信大家对"Spring中Bean的装配方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0