spring 基于注解管理bean @Autowired

目录结构: 

代码示例:

UserContronller.java

package com.atguigu.spring6.autowired.controller;

import com.atguigu.spring6.autowired.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class UserContronller {
    //注入Service  属性注入
    @Autowired//根据类型找到对应对象,完成注入
    private UserService userService;

    public void add(){
        System.out.println("controller");
        userService.add();
    }
}

 

 UserDao.interface

package com.atguigu.spring6.autowired.dao;

public interface UserDao {
    public void add();
}

UserdaoImpl.java

package com.atguigu.spring6.autowired.dao;

import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImpl implements UserDao {


    @Override
    public void add() {
        System.out.println("dao");
    }
}

UserService.interface

package com.atguigu.spring6.autowired.service;

public interface UserService {
    public void add();
}

 UserServiceImpl.java

package com.atguigu.spring6.autowired.service;

import com.atguigu.spring6.autowired.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService{
//    注入dao
    @Autowired
    private UserDao userDao;

    @Override
    public void add() {
        System.out.println("service");
        userDao.add();
    }
}

bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启组件扫描功能-->
    <context:component-scan base-package="com.atguigu.spring6"></context:component-scan>

</beans>

UserTest.java

package com.atguigu.spring6.autowired;

import com.atguigu.spring6.autowired.controller.UserContronller;
import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserTest {
    @Test
    public void test(){
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        UserContronller userContronller = ac.getBean(UserContronller.class);
        userContronller.add();
    }
}

控制台输出

 此时Dao包下新增UserDao接口的实现类 UserRedisImpl.java

package com.atguigu.spring6.autowired.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

@Repository
public class UserRedisImpl implements UserDao{

    @Autowired
    private UserRedisImpl userRedis;
    @Override
    public void add() {
        System.out.println("Redis dao");
    }
}

运行报错: 

解决方法

 

相关推荐

  1. spring基于注解管理Bean

    2023-12-17 04:16:03       46 阅读
  2. spring(二):基于注解实现依赖注入

    2023-12-17 04:16:03       46 阅读
  3. spring2基于注解开发

    2023-12-17 04:16:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 04:16:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 04:16:03       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 04:16:03       82 阅读
  4. Python语言-面向对象

    2023-12-17 04:16:03       91 阅读

热门阅读

  1. springboot整合redis并使用cache

    2023-12-17 04:16:03       52 阅读
  2. 【Python 千题 —— 基础篇】句子首字母要大写

    2023-12-17 04:16:03       64 阅读
  3. 2. 皇后的控制力

    2023-12-17 04:16:03       71 阅读
  4. Linux-yum安装部署Redis

    2023-12-17 04:16:03       52 阅读
  5. 西电微机原理实验三

    2023-12-17 04:16:03       56 阅读
  6. 算法基础十三

    2023-12-17 04:16:03       51 阅读
  7. Linux的双网口(内网+外网)的IP报文转发

    2023-12-17 04:16:03       50 阅读