1.Component注解

当我们在AccountServiceImpl上面写一个@component注解的时候,他就会把这个类反射创建一个对象,并且存入spring容器中。spring容器时一个map容器,是由key-value组成的,存这个对象,是value。那么key呢?
属性:value:用于指定bean的id,当我们不写时,它的默认值时当前类名,且首字母小写
按照下面代码,我们直接运行是错误的

@Component
public class AccountServiceImpl implements IAccountService {
//1.获取核心容器对象
ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");
//2.根据id获取bean对象
IAccountService as=(IAccountService)ac.getBean("accountServiceImpl");       //第一种,拿到object类型,强转
System.out.println(as);


当我们解析配置文件时,就会创建容器,从而创建对象,而此时配置是空的,没有定义。在解析配置文件的时候,又是如何知道在哪儿写了注解呢?
前面的时候说过了有5个jar包,其中有一个spring-aop的jar包是现在所要用的。
所以在bean.xml我们需要有一项配置
首先需要在官网导入约束和依赖
告知spring在创建容器时要扫描的包,配置所需要的标签不是在beans的约束中,而是一个名称为context名称空间和约束中

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd">

加入这个标签之后,就会扫描这个包下的所有注解

<context:component-scan base-package="com.yujie"></context:component-scan>


注解相对xml更为简单一些,因为这里面直接写上一个标签,后来写上一个注解,之后再也不用在bean.xml中配置了,想创建对象就加注解。
如果要加一个id,就用value即可。

@Component(value="accountService")
public class AccountServiceImpl implements IAccountService

细节:如果一个注解中只有一个value属性,那么value属性的名称时可以不写的

@Component("accountService")

2.Component衍生出的注解

1.用于创建对象的注解
@component:用于把当前对象存入spring容器中
@Controller:一般用在表现层
@Service:一般用在业务层
@Repository:一般用在持久层
以上三个注解,他们的作用和属性与component是一模一样的,换句话说,component能做的事情,他们三个也能做

他们三个是spring框架为我们提供明确三层使用的注解,使我们的三层对象更加清晰。
如果我们随便用,也没有代码的问题,没有一个限制。他们是继承的关系。

@Repository("accountDao")
public class AccountDaoImpl implements IAccountDao
@Service(value="accountService")
public class AccountServiceImpl implements IAccountService

如果不属于三层中的任何一层,我们就用component来创建

Spring框架----用于创建对象的Component注解相关推荐

  1. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  2. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件

    1. 组件扫描 首先,必须让Spring扫描组件所在的包,并且,组件类的声明之前必须添加@Component注解! 其实,除了@Component注解以外,还可以使用以下注解实现同样的效果: @Con ...

  3. Spring框架(IOCDI)xXML形式和注解形式

    IOC Spring的依赖包 pom.xml <dependency><groupId>org.springframework</groupId><artif ...

  4. Spring源码解析之@Component注解的扫描

    阅读须知 Spring源码版本:4.3.8 文章中使用/* */注释的方法会做深入分析 正文 承接Spring源码解析之context:component-scan标签解析,下面就是扫描的流程: Cl ...

  5. .Net转Java自学之路—Spring框架篇二(IOC注解、AOP)

    Spring的Bean操作(注解方式): 注解:代码中特殊的标记,使用注解可以完成相关功能. @注解名称(属性名称=属性值) 注解可以使用在类.方法.属性上面. 主要用途:可以替代配置文件来创建对象和 ...

  6. 深入学习Spring框架(二)- 注解配置

    1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...

  7. Spring框架(五):Spring事务简述(注解方式)

    一.Spring事务的概述 事务的作用是什么? 简单来说,就是在数据层保障一系列的数据库操作同成功同失败(提交和回滚) Spring事务作用︰在数据层或[业务层]保障一系列的数据库操作同成功同失败. ...

  8. Spring框架知识复习之二

    Spring使用注解对Bean进行管理 1 使用注解需配置aop相关xsd文件的约束和命名空间 xsd文件名为:spring-aop-4.2.xsd 2 注解组件扫描配置 示例如下:base-pack ...

  9. Java小记-Spring框架(超级无敌认真好用,万字收藏篇!!!!)

    文章目录 Spring 1 Spring框架概述 1.1 什么是Spring 1.2 Spring的核心技术 1.3 Spring体系结构 2 Spring基于xml的简单使用 3 Spring的依赖 ...

最新文章

  1. 【代码笔记】Web-CSS-CSS id和Class选择器
  2. python之父-Python之父宣布退休,但Python仍在吞噬世界
  3. 修罗武神正版游戏服务器,修罗武神正版游戏官网
  4. 查找窗口隐藏了怎么办_如何还原U盘隐藏空间 U盘隐藏空间还原方法【详解】
  5. 教你用100多行写一个数据库(附源码)
  6. android网络通信之HTTP协议教程实例汇总
  7. fisher线性判别算法python_干货|机器学习算法之线性判别分析
  8. [C++]二维数组还是一维数组?
  9. Python 基础课程第五天
  10. jmultiselect2side.php改为asp,jquery.multiselect2side使用以及文件下载
  11. vmware虚拟机连接网络
  12. bi系统是做什么的?
  13. PS安装失败解决方法
  14. CDN (Content Delivery Network 内容分发网络)
  15. 石头科技的“现实”和“远方”
  16. Java实现一个打飞机的小游戏【附源码】
  17. 计算机常见的三种bios,各种类型电脑进入BIOS方法汇总,包含中英文对照图表!...
  18. 89c52汇编语言实现跑马灯,汇编语言实现24个跑马灯制作
  19. html中index函数,INDEX函数.doc
  20. java jxl导出excel小结

热门文章

  1. 小米9将在MWC2019上登场:后置三摄拍照令人“中毒”
  2. 华为AI音箱更新春节专属技能:对春联 拜年留言
  3. 拳王虚拟项目公社:如何如何打造虚拟自动盈利系统,用虚拟资源实现被动收入?
  4. 拳王虚拟项目公社:通过网络卖虚拟产品,月入1W的全自动化推广引流技术
  5. 在Vmware下linux与ARM开发板的NFS系统搭建【ZT】
  6. 一生里和你爱的人做完这50件事
  7. 晨哥真有料丨宁缺毋滥会等来一个很好的人吗?
  8. java简易记账软件_0006JavaSE简单的项目FamilyAccount家庭记账控制台应用程序
  9. Unity3D研究院之获取摄像机的视口区域(转)
  10. 线性表:2.线性表的顺序存储结构--顺序表及C语言实现