spring基于xml管理自动装配的两种方式
文章目录
pring基于xml管理自动装配的两种方式
代码案列:
dao:
-- dao接口
clike
package com.guigu.auto.dao;
public interface UserDao {
public void addUserDao();
}
--dao实现类:
clike
package com.guigu.auto.dao;
public class UserDaoImpl implements UserDao {
public void addUserDao() {
System.out.println("实现userdao接口");
}
}
service:
-- serviec接口:
c
package com.guigu.auto.service;
public interface UserService {
public void addUserService();
}
--service实现类:
clike
package com.guigu.auto.service;
import com.guigu.auto.dao.UserDao;
import com.guigu.auto.dao.UserDaoImpl;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void addUserService() {
System.out.println("执行addUserService");
//调用userdao中的方法
userDao.addUserDao();
// UserDao userDao = new UserDaoImpl();
// userDao.addUserDao();
}
}
controller:
go
package com.guigu.auto.controller;
import com.guigu.auto.service.UserService;
import com.guigu.auto.service.UserServiceImpl;
public class UserController {
//定义service属性生成set方法
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public void UserController(){
//调用UserService中的方法
userService.addUserService();
System.out.println("UserController方法执行了-----");
// UserService userService = new UserServiceImpl();
// userService.addUserService();
}
}
bean.xml:
go
<?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">
<!--autowire="byType":根据类型自动注入
autowire="byName:根据名字自动注入"-->
<bean id="userController" class="com.guigu.auto.controller.UserController" autowire="byType">
</bean>
<bean id="userService" class="com.guigu.auto.service.UserServiceImpl" autowire="byType">
</bean>
<bean id="userDao" class="com.guigu.auto.dao.UserDaoImpl">
</bean>
</beans>
第一种方式:根据类型自动配置---autowire="byType"
clike
<bean id="userController" class="com.guigu.auto.controller.UserController" autowire="byType">
</bean>
第二种:根据名称自动配置--auto="byName"
go
<bean id="userController" class="com.guigu.auto.controller.UserController" autowire="byName">
</bean>
spring中Byname和Bytype区别:
**byName:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。
byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配;如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生,也可以通过设置**