背景

三层架构基于xml的自动装配

发表于 2024/08/30 16:46
🌺 摘要
spring之三层架构基于xml的自动装配

1.手动装配

<bean id="userController" class="com.study.spring.controller.UserController">
    <property name="userService" ref="userService"></property>
</bean>
<bean id="userService" class="com.study.spring.service.impl.UserServiceImpl">
    <property name="userDao" ref="userDao"></property>
</bean>
<bean id="userDao" class="com.study.spring.dao.impl.UserDaoIml"></bean>
controller
public class UserController {
    UserService userService;

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public void saveUser(){
        userService.saveUser();
    }
}
service
public class UserServiceImpl implements UserService {
    UserDao userDao;

    public UserDao getUserDao() {
        return userDao;
    }

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

    @Override
    public void saveUser() {
        userDao.saveUser();
    }
}
dao
public class UserDaoIml implements UserDao {
  public void saveUser(){
    System.out.println("保存成功");
  }
}
public void test(){
    ApplicationContext ioc = new ClassPathXmlApplicationContext("autoWired.xml");
    UserController controller = ioc.getController(UserController.class);
    controller.saveUser();
}

2.自动装配

ioc会为bean的接口或者类类型自动匹配其他bean,自动赋值 需要配置bean的属性autowire指定自动装配类型 default,no表示说不自动装配. byType:根据类型匹配.常用 a.找到多个报错, b.一个都没匹配到则不赋值,使用默认值null c.所以有且一个要匹配

  <bean id="userController" class="com.study.spring.controller.UserController" autowire="byType">
<!--        <property name="userService" ref="userService"></property>-->
    </bean>
    <bean id="userService" class="com.study.spring.service.impl.UserServiceImpl" autowire="byType">
<!--        <property name="userDao" ref="userDao"></property>-->
    </bean>
    <bean id="userDao" class="com.study.spring.dao.impl.UserDaoIml"></bean>

byName: 就是根据要赋值的属性名去匹配id

 <bean id="userController" class="com.study.spring.controller.UserController" autowire="byName">
<!--        <property name="userService" ref="userService"></property>-->
    </bean>
    <bean id="userService" class="com.study.spring.service.impl.UserServiceImpl" autowire="byName">
<!--        <property name="userDao" ref="userDao"></property>-->
    </bean>
    <bean id="userDao" class="com.study.spring.dao.impl.UserDaoIml"></bean>
文章发表于 2024/08/30 16:46
上一篇 三层架构基于注解的自动装配
下一篇 js内置对象

评论

加载中...