Spring6-基于XML自动装配
创始人
2024-05-23 19:40:30

一、介绍

自动装配:
根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值

二、创建controller

package com.wsy.auto.controller;import com.wsy.auto.service.UserService;
import com.wsy.auto.service.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;/*** @author within* @date 2023-02-09 11:01*/
public class UserController {private UserService userService;public void setUserService(UserService userService) {this.userService = userService;}public void addUserController(){System.out.println("--UserController--");
//        原生写法
//        UserService userService = new UserServiceImpl();
//        userService.addUserService();userService.addUserService();}
}

三、创建service

package com.wsy.auto.service;/*** @author within* @date 2023-02-09 11:09*/
public interface UserService {public void addUserService();
}

四、创建类UserServiceImpl实现接口UserService

package com.wsy.auto.service;import com.wsy.auto.dao.UserDao;
import com.wsy.auto.dao.UserDaoImpl;/*** @author within* @date 2023-02-09 11:09*/
public class UserServiceImpl implements UserService{private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic void addUserService() {System.out.println("--addUserService--");
//        UserDao userDao = new UserDaoImpl();
//        userDao.addUserDao();userDao.addUserDao();}
}

五、创建接口UserDao

package com.wsy.auto.dao;/*** @author within* @date 2023-02-09 11:09*/
public interface UserDao {public void addUserDao();
}

六、创建类UserDaoImpl实现接口UserDao

package com.wsy.auto.dao;import com.wsy.factorybean.User;/*** @author within* @date 2023-02-09 11:10*/
public class UserDaoImpl implements UserDao {@Overridepublic void addUserDao() {System.out.println("--addUserDao--");}
}

七、配置bean

使用bean标签的autowire属性设置自动装配效果
自动装配方式:byType
byType:根据类型匹配IOC容器中的某个兼容类型的bean,为属性自动赋值
若在IOC中,没有任何一个兼容类型的bean能够为属性赋值,则该属性不装配,即值为默认值null
若在IOC中,有多个兼容类型的bean能够为属性赋值,则抛出异常NoUniqueBeanDefinitionException



自动装配方式:byName
byName:将自动装配的属性的属性名,作为bean的id在IOC容器中匹配相对应的bean进行赋值


八、测试

class UserControllerTest {@Testpublic void testAutoByType(){ApplicationContext ac = new ClassPathXmlApplicationContext("bean-autoByType.xml");UserController userController = ac.getBean("userController",UserController.class);userController.addUserController();}@Testpublic void testAutoByName(){ApplicationContext ac = new ClassPathXmlApplicationContext("bean-autoByName.xml");UserController userController = ac.getBean("userController",UserController.class);userController.addUserController();}
}

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...