目录


前言

注解可以写在 方法属性 上 ;

使用 注解,需要导入 aop 包;

使用 注解,不代表,我们可以完全脱离配置文件,还是需要配置文件的,只是配置文件中,不再需要写很多配置 ;


使用 aop 的配置文件写法

相对于使用纯配置文件的 bean 约束,使用aop,多了一个 context 约束

多加一个 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" <!--多了一个 context 的约束-->
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here --> </beans>

开启注解扫描

在配置文件中加上一句配置 ,仅仅需要写这一句配置。

它会去包所在路径,扫描里面的 方法属性 上 ,是否有注解,

 <!--开启注解扫描-->
<context:component-scan base-package="包名"></context:component-scan>

base-package 属性,写上要扫描的包路径;

  • 有多个包需要扫描的时候

    比如:现在有2个包:ijava.xin.aop、ijava.xin.ioc,需要扫描

    • 我们可以在属性里面用 逗号 隔开:
     <context:component-scan base-package="ijava.xin.aop、ijava.xin.ioc">
    </context:component-scan>

    这样写是一种写法,但是当有十几个、几十个包需要扫描的时候,就显得ZZ了 ;

    • 写上级的包名。

    比如:ijava.xin.aop、ijava.xin.ioc,它们都属于 ijava.xin 下面的,我们就可以在属性里面填上 ijava.xin ,这样就扫描 ijava.xin 下面所有的子包了。

     <context:component-scan base-package="ijava.xin">
    </context:component-scan>

利用注解创建对象

  1. Spring 建议我们使用其他的三个标签创建对象:

    @Component(value = "user")
    public class User { public void add(){
    System.out.println("User add ...");
    }
    }

    使用 @Component 创建对象,属性有 value 跟 使用配置文件的 bean 标签的 id 一样的作用;value 可以省略不写 ;

    @Controller() : WEB层使用
    @Service() : 业务层使用
    @Repository() : 持久层使用

    当前 Spring 版本(4.X),@Component 标签功能跟那三个是一样的,但是,我们还是应该分开使用,在哪一层就是有对应的标签;Spring 会在后续的版本,对它们进行功能的增强 ;

  2. scope 对应的 @Scope

    @Component(value = "user")
    @Scope(value = "prototype")
    public class User { public void add(){
    System.out.println("User add ...");
    }
    }

    使用多例,创建对象 ;@Scope 默认值也是 singleton


注解方式注入属性

使用注解注入的时候,不需要写 set 方法 ;

  1. @Autowired

    @org.springframework.stereotype.Service("service")
    public class Service { @Autowired
    private UserDao userDao ; public void add(){
    System.out.println("Service add ...");
    userDao.add();
    }
    }

    使用 @Autowired 注解,就可以自动填充属性 ;

    @Autowired 注解 是如何找到对象,并且注入的呢?

    当属性被标上 @Autowired 注解 的时候,它会根据类的类型,去寻找该类型的对象,跟类上的创建对象注解的内容没有关系 ;


  2. @Resource

    @org.springframework.stereotype.Service("service")
    public class Service { @Resource(name = "userDao")
    private UserDao userDao ; public void add(){
    System.out.println("Service add ...");
    userDao.add();
    }
    }

    使用 @Resource 注解,则根据注解的内容提供的名字,去寻找对应的对象 ;


配置文件和注解混合使用

  1. 创建对象使用配置文件方式实现
  2. 注入属性,使用注解方式实现

(四)Spring 的 bean 管理(注解方式)的更多相关文章

  1. Spring之Bean管理------注解方式

    编写测试类 1,编写相关的类 public interface UserDao { public void sayHello(); } public class UserDaoImpl impleme ...

  2. IoC容器-Bean管理注解方式(创建对象)

    IoC操作Bean管理(基于注解方式) 1,什么是注解 (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值...) (2)使用注解,注解作用在类上面,方法上面,属性上面 ( ...

  3. IoC容器-Bean管理注解方式(注入属性@Autowired和Qualifier)

    基于注解方式实现属性注入 (1)@Autowired:根据属性类型进行自动装配 第一步 把 service 和 dao 对象创建,在service 和 dao 类添加创建对象注解 第二步 在servi ...

  4. IoC容器-Bean管理注解方式(完全注解开发)

    完全注解开发 (1)创建配置类,替代xml配置文件 (2)编写测试类 在实际中一般用springboot做

  5. IoC容器-Bean管理注解方式(组件扫描配置)

    4,开启组件扫描细节配置

  6. Spring 的Bean管理的常用注解

    属性注入的注解(使用注解注入的方式,可以不用提供set方法) @Value 用于注入普通类型 @Autowired 自动装配 :默认按类型进行装配  按名称注入 @Qualifier 强制使用名称注入 ...

  7. 面试阿里,字节,美团必看的Spring的Bean管理详解

    IOC容器 工厂只负责创建对象,而Spring当然不仅仅是一个对象工厂,其核心是一个对象容器,其具备控制反转的能力,所以也称为IOC容器. 帮助我们存放对象,并且管理对象,包括:创建.销毁.装配,这样 ...

  8. Spring的bean管理(注解方式)

    注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...

  9. (转)Spring的bean管理(注解方式)

    http://blog.csdn.net/yerenyuan_pku/article/details/69663779 Spring的bean管理(注解方式) 注解:代码中的特殊标记,注解可以使用在类 ...

  10. Spring 的 Bean 管理(注解方式)

    Spring 的 Bean 管理(注解方式) 1. 导入必要的 jar 包和 xml 文件 使用注解需要导入 spring-aop 的 jar 包. applicationContext.xml 文件 ...

随机推荐

  1. 关于要python爬虫你需要的一些网址和信息[待补充]

    phantomjs无头浏览器(基本不用) http://phantomjs.org/download.html 如果报 下面这种错误 [root@hwgz01 ~]# phantomjs phanto ...

  2. vue中插槽(slot)的使用

    刚学vue的时候,曾经学习过slot插槽的使用,但是后面接触的不多,因为之前我还没使用element-ui... 但是使用了element-ui之后,里面的许多组件,有时候会使用插槽,为了巩固一下插槽 ...

  3. 前端逼死强迫症系列之javascript

    JavaScript 和Python.C#.Java.Ruby一样,都是一门独立的编程语言. 像python.C.Java等都需要解释器,学习它们的语法.而浏览器本身就是javascript的解释器. ...

  4. JavaWeb_(Mybatis框架)MyBatis Generator简单入门

    官方文档 传送门 下载地址 传送门 MyBatis Generator(MBG)简介: MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将为 ...

  5. 通过Nginx部署flask项目

    用Flask开发之后,很多人,喜欢用nohup python manage.py & 这样的形式,放到后台运行,其实这样只是个发开模式,很简陋,无法支持并发,进程监控等功能.所以采用nginx ...

  6. puppeteer学习笔记合集

    官方英文版API入口(如果你英文好的话):https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md. 汉化版API入口(网上有 ...

  7. plus.zip.compressImage 压缩报错{"code":-5,"message":"输出图片失败"}

    var pathCompress = "_doc/" + getNowFormatDate(new Date()) + ' ' + Math.random() + ".c ...

  8. java课后实验性问题6

    1.继承条件下的构造方法调用. class Grandparent { public Grandparent(){ System.out.println("GrandParent Creat ...

  9. Restorator软件使exe文件都不能打开,exe不支持此接口

    遇到的问题: 下载了一个软件Restorator(资源修改器),填写完注册码之后,所有的exe文件都不能打开了,任务管理器不支持此接口打不开. 问题原因: 软件Restorator关联exe文件,运行 ...

  10. 【Java】利用java.io.PrintWriter写出文本文件

    代码: package com.hy.expired; import java.io.FileNotFoundException; import java.io.PrintWriter; public ...