6、Spring之基于xml的自动装配

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。6、Spring之基于xml的自动装配,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

6.1、场景模拟

6.1.1、创建UserDao接口及实现类

image

package org.rain.spring.dao;

/**
 * @author liaojy
 * @date 2023/8/5 - 11:05
 */
public interface UserDao {

    void saveUser();

}

image

package org.rain.spring.dao.impl;

import org.rain.spring.dao.UserDao;

/**
 * @author liaojy
 * @date 2023/8/5 - 11:08
 */
public class UserDaoImpl implements UserDao {

    public void saveUser() {
        System.out.println("保存成功");
    }

}

6.1.2、创建UserService接口及实现类

image

package org.rain.spring.service;

/**
 * @author liaojy
 * @date 2023/8/5 - 11:10
 */
public interface UserService {

    void saveUser();

}

image

package org.rain.spring.service.impl;

import org.rain.spring.dao.UserDao;
import org.rain.spring.service.UserService;

/**
 * @author liaojy
 * @date 2023/8/5 - 11:23
 */
public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void saveUser() {
        userDao.saveUser();
    }
}

6.1.3、创建UserController

image

package org.rain.spring.controller;

import org.rain.spring.service.UserService;

/**
 * @author liaojy
 * @date 2023/8/5 - 11:32
 */
public class UserController {

    private UserService userService;

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public void saveUser(){
        userService.saveUser();
    }
}

6.1.4、配置bean

image

<?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">

    <bean id="userDao" class="org.rain.spring.dao.impl.UserDaoImpl"></bean>

    <bean id="userService" class="org.rain.spring.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
    </bean>

    <bean id="userController" class="org.rain.spring.controller.UserController">
        <property name="userService" ref="userService"></property>
    </bean>

</beans>

6.1.5、测试

image

    @Test
    public void testAutoWireByXML(){
        ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-autowire.xml");
        UserController userController = ioc.getBean(UserController.class);
        userController.saveUser();
    }

6.2、两种自动装配方式

6.2.1、方式一:byType(常用)

6.2.1.1、配置bean

image

注意:
若在IOC中,没有任何一个兼容类型的bean能够为属性赋值,则该属性不装配,即值为默认值null
若在IOC中,有多个兼容类型的bean能够为属性赋值,则抛出异常NoUniqueBeanDefinitionException

    <bean id="userDao" class="org.rain.spring.dao.impl.UserDaoImpl"></bean>

    <!--
        autowire属性:指定自动装配的策略,为bean的类类型(或接口类型)的属性自动赋值
            byType:根据要赋值的属性的类型,匹配ioc容器中的兼容类型的bean,为属性赋值
    -->
    <bean id="userService" class="org.rain.spring.service.impl.UserServiceImpl" autowire="byType"></bean>

    <bean id="userController" class="org.rain.spring.controller.UserController" autowire="byType"></bean>

6.2.1.2、测试

image

6.2.2、方式二:byName(后备)

6.2.2.1、配置bean

image

当在IOC中,有多个兼容类型的bean能够为属性赋值时;可以使用byName的方式,匹配id和属性名相同的bean为属性赋值

    <bean id="userDao" class="org.rain.spring.dao.impl.UserDaoImpl"></bean>

    <bean id="userDaotwo" class="org.rain.spring.dao.impl.UserDaoImpl"></bean>

    <!--
        autowire属性:指定自动装配的策略,为bean的类类型(或接口类型)的属性自动赋值
            byName:根据要赋值的属性的名称,匹配ioc容器中的对应id的bean,为属性赋值
    -->
    <bean id="userService" class="org.rain.spring.service.impl.UserServiceImpl" autowire="byName"></bean>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/194531.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!