自动装配:
根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值
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();}
}
package com.wsy.auto.service;/*** @author within* @date 2023-02-09 11:09*/
public interface UserService {public void addUserService();
}
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();}
}
package com.wsy.auto.dao;/*** @author within* @date 2023-02-09 11:09*/
public interface UserDao {public void addUserDao();
}
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标签的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();}
}
上一篇:_001_Zotero入门