在 classpath 中扫描组件

组件扫描(component scanning):  Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件.

特定组件包括:

@Component: 基本注解, 标识了一个受 Spring 管理的组件

@Respository: 标识持久层组件

@Service: 标识服务层(业务层)组件

@Controller: 标识表现层组件

对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称

需要导入aop的包

<?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.xsdhttp://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 开启注解扫描 --><context:component-scan base-package="com.learn.spring" >   </beans>
package com.learn.spring.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;import com.learn.spring.service.UserService;/*** 表现层的组件* * @Controller的作用:*     等价于在xml配置文件中: <bean id="userController" class="com.learn.spring.controller.UserController"></bean>* @Controller注解默认的id值是类名首字母小写,如果想要自己指定,可以使用value属性来指定* @Controller(value="id") / @Controller("id")*/
@Controller
//@Component
public class UserController {}
package com.learn.spring.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;import com.learn.spring.dao.UserDao;/*** 业务层的组件**/
@Service
public class UserService {  }
package com.learn.spring.dao;public interface UserDao {}
package com.learn.spring.dao;import org.springframework.stereotype.Repository;@Repository
public class UserDaoJdbcImpl  implements UserDao{}
package com.learn.spring.test;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.learn.spring.controller.UserController;
import com.learn.spring.dao.UserDao;
import com.learn.spring.service.UserService;public class TestAnnotation {public static void main(String[] args) {//.1实例化ioc容器ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");//2.获取beanUserController  userController =(UserController) ctx.getBean("userController");System.out.println("userController:" + userController);//      UserService userService = (UserService) ctx.getBean("userService");
//      System.out.println("userService: "+ userService);
//
//      UserDao userDao = (UserDao)ctx.getBean("userDaoJdbcImpl");
//      System.out.println("userDao:" +userDao);}
}

基于注解的方式配置bean相关推荐

  1. 【Spring5】004-IOC容器+基于注解的方式实现Bean管理

    文章目录 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供的注解 3.基于注解方式实现对象创建 3.1.执行流程介绍 4.开启组件扫描配置的细节问题 5.基于注解方式实现属性注入 ...

  2. 基于注解的方式装配bean

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. 基于注解的 AOP 配置

    基于注解的 AOP 配置 bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xml ...

  4. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  5. java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet...

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  6. 基于注解的 IOC 配置

    基于注解的 IOC 配置 学习基于注解的 IoC 配置,大家脑海里首先得有一个认知,即注解配置和 xml 配置要实现的功能都是一样 的,都是要降低程序间的耦合.只是配置的形式不一样. 关于实际的开发中 ...

  7. spring 基于注解的控制器配置

    http://ttaale.iteye.com/blog/787586 spring 基于注解的控制器配置 博客分类: spring SpringBeanServletMVCWeb 13.12. 基于 ...

  8. 缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

    之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下 ...

  9. Spring基于注解的方式一

    Spring基于注解的方式一 Spring注解简介 之前的时候我们学习的Spring都是基于Spring配置文件的形式来编写,现在很多的情况下使用SpringBoot的时候是基于注解的形式,这里我们首 ...

最新文章

  1. mysql事务处理用法与实例详解
  2. 用C语言编写:判断一个≥2的整型数是否存在于斐波那契数列中?
  3. foreach对集合的输出作用
  4. mysql实现查询最近7天的数据
  5. 应届硕士研究生算法岗秋招总结
  6. 最新综述:对话式检索数据集汇总
  7. 线性表的顺序存储 c语言表达,线性表的基本操作顺序存储(C语言).doc
  8. 插入递归引用Identity列的记录
  9. 用python画多来a梦-python3里tkinter中canvas(画板)案例之哆啦A梦
  10. python编程实战:暴力破解WIFI密码!亲测运行有效!
  11. 基于cropper.js封装vue在线图片裁剪组件
  12. vue3.0开发环境搭建及vue2.x和vue3.x的区别
  13. 解决eclipse mars2中不能设置tomcat8.5
  14. Excel - VLOOKUP 函数的精确查找和近似查找
  15. 淘宝/天猫关键词搜索采集接口分析商品价格走势(商品列表,商品销量,商品价格,分类ID采集精准商品数据)接口代码对接流程
  16. qq音乐html5测试性格,根据你的听歌习惯测试你的性格
  17. leetcode刷题目录总结
  18. java web设置首页_java web设置默认首页方法
  19. 高物实验报告计算机模拟高分子,高分子物理课程实验报告(.doc
  20. Spring Cloud Alibaba微服务架构实战教程—07集成knife4j生成Api文档

热门文章

  1. 网络编程: 基于UDP协议的socket
  2. CentOS6.5的安装及忘记root密码的措施
  3. js-移动端android浏览器中input框被软键盘遮住的问题解决方案
  4. 自动监控主从MySQL同步的SHELL脚本
  5. iOS中Block的基础用法
  6. Firebug的安装方法
  7. 帮盖尔优化SQL-----子查询优化的经典案例
  8. (转)科学是怎样产生的
  9. JAVA 客户端跳转与服务器端跳转 get与post
  10. 运营一个网站,新增加一个功能,容易忽视哪些问题就匆匆上线?