1. ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

注解:

  说起注解,哇哦,每个人都或多或少的用到过

  像什么@Overried,@Test,@Param等等之前就早已熟悉的注解,现在要用注解实现di的注入

  注解的本质是什么?就是一个接口,他里面的参数是什么呢?就是这个接口里面的方法,so,我们怎么做?

案例如下:

  基于注解的jar包就不用说了,按照之前的博客走下来的无需再添加新的jar包

  还是俩个类,一个car,一个student,学生有一辆小汽车,基于注解的di注入

    Car类

  1. package cn.dawn.day07annotationdi;
  2.  
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.stereotype.Component;
  5.  
  6. /**
  7. * Created by Dawn on 2018/3/5.
  8. */
  9. @Component("car")
  10. public class Car {
  11. @Value("红色")
  12. private String color;
  13. @Value("奔驰")
  14. private String type;
  15.  
  16. public String getColor() {
  17. return color;
  18. }
  19.  
  20. public void setColor(String color) {
  21. this.color = color;
  22. }
  23.  
  24. public String getType() {
  25. return type;
  26. }
  27.  
  28. public void setType(String type) {
  29. this.type = type;
  30. }
  31. }

    @Componed("car")  //表示这个生成的对象的名字

    @Value("奔驰")    //用于给属性赋值

  Student类

  1. package cn.dawn.day07annotationdi;
  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.beans.factory.annotation.Qualifier;
  5. import org.springframework.beans.factory.annotation.Value;
  6. import org.springframework.stereotype.Component;
  7.  
  8. import javax.annotation.Resource;
  9.  
  10. /**
  11. * Created by Dawn on 2018/3/5.
  12. */
  13. //student类
  14. @Component("student")
  15. public class Student {
  16. @Value("老胡小子,呵呵哒")
  17. private String name;
  18. @Value("")
  19. private Integer age;
  20.  
  21. //@Resource(name = "car")
  22. @Autowired
  23. @Qualifier(value = "car")
  24. private Car car;
  25.  
  26. //带参构造
  27. public Student(String name, Integer age, Car car) {
  28. this.name = name;
  29. this.age = age;
  30. this.car = car;
  31. }
  32.  
  33. //无参构造
  34. public Student() {
  35. }
  36.  
  37. public String getName() {
  38. return name;
  39. }
  40.  
  41. public void setName(String name) {
  42. this.name = name;
  43. }
  44.  
  45. public Integer getAge() {
  46. return age;
  47. }
  48.  
  49. public void setAge(Integer age) {
  50. this.age = age;
  51. }
  52.  
  53. public Car getCar() {
  54. return car;
  55. }
  56.  
  57. public void setCar(Car car) {
  58. this.car = car;
  59. }
  60. }

    一样的就不做解释了,说一下下面这几个

    @Resource(name="car")    //这个是javax包下的注解,可以实现域属性的注入,下面还有一种方式,

    @AutoWried

    @Qualifier(value="car")    //这两行联用,他是spring的注解,也是给对象的域属性赋值

  

  在Spring的配置文件中,需要配置一点内容,首先导入命名空间context,和注解的包扫描器(我是idea,写完下面的节点,上面的命名空间自动生成)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/aop
  9. http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  10. <context:component-scan base-package="cn.dawn.day07annotationdi">
  11. </context:component-scan>
  12.  
  13. </beans>

  单测方法

  1. package cn.dawn.day07annotationdi;
  2.  
  3. import org.junit.Test;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6.  
  7. /**
  8. * Created by Dawn on 2018/3/3.
  9. */
  10. public class test20180306 {
  11.  
  12. @Test
  13. /*di注解注入*/
  14. public void t01(){
  15. ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext-day07annotationdi.xml");
  16. Student student = (Student) context.getBean("student");
  17. System.out.println("学生"+student.getName()+"开"+student.getCar().getType());
  18. }
  19. }

SSM-Spring-07:Spring基于注解的di注入的更多相关文章

  1. Spring框架第四篇之基于注解的DI注入

    一.说明 与@Component注解功能相同,但意义不同的注解还有三个: 1)@Repository:注解在Dao实现类上 2)@Service:注解在Service实现类上 3)@Controlle ...

  2. 07 Spring框架 依赖注入(四)基于注解的依赖注入

    前面几节我们都在使用xml进行依赖的注入,但是在实际的开发中我们往往偏爱于使用注解进行依赖注入,因为这样更符合我们人的思维,并且更加快捷,本节就来讲述Spring基于注解的依赖注入: 信息注入注解 @ ...

  3. 使用 Spring 2.5 基于注解驱动的 Spring MVC

    http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/ 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sp ...

  4. 使用 Spring 2.5 基于注解驱动的 Spring MVC--转

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...

  5. spring boot 中@Autowired注解无法自动注入的错误

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/huihuilovei/article/de ...

  6. Spring IOC之基于注解的容器配置

    Spring配置中注解比XML更好吗?基于注解的配置的介绍提出的问题是否这种途径比XML更好.简单来说就是视情况而定. 长一点的答案是每一种方法都有自己的长处也不足,而且这个通常取决于开发者决定哪一种 ...

  7. Spring MVC中基于注解的 Controller

         终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响 ...

  8. Spring 使用AOP——基于注解配置

    首先,使用注解实现AOP是基于AspectJ方式的. 创建包含切点方法的类 package cn.ganlixin.test; import org.aspectj.lang.annotation.P ...

  9. Spring(七)之基于注解配置

    基于注解的配置 从 Spring 2.5 开始就可以使用注解来配置依赖注入.而不是采用 XML 来描述一个 bean 连线,你可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身. ...

随机推荐

  1. 《java入门第一季》之面向对象(继承)

    /* 继承的注意事项: A:子类只能继承父类所有(非私有)的成员(成员方法和成员变量),私有的变量和方法没法继承 B:子类(不能)继承父类的(构造方法),但是可以通过super关键字去访问父类构造方法 ...

  2. 关于精灵帧(Sprite Frame)的尺寸大小

    一个对象的精灵帧(Sprite Frame)有若干关于大小的尺寸. 比较容易混淆,这里记录下来区别: CCSpriteFrame *spriteFrame = self.spriteFrame; CG ...

  3. Java-HttpSession监听

    //HttpSession监听 public interface HttpSessionActivationListener extends EventListener { /** Notificat ...

  4. LIRe 源代码分析 1:整体结构

    ===================================================== LIRe源代码分析系列文章列表: LIRe 源代码分析 1:整体结构 LIRe 源代码分析 ...

  5. Linux下的 .o、.a、.so文件

    http://blog.sina.com.cn/s/blog_656681710100qzmy.html 工程里很多函数只是有声明,找不到实现的代码.因为那些实现代码已经编译成库所以看不见,我所看见的 ...

  6. C语言实现牛顿迭代法解方程

    利用迭代算法解决问题,需要做好以下三个方面的工作: 一.确定迭代变量 在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭 ...

  7. Java进阶(十五)Java中设置session的详细解释

    Java中设置session的详细解释 简单通俗的讲session就是象一个临时的容器,用来存放临时的东西.从你登陆开始就保存在session里,当然你可以自己设置它的有效时间和页面,举个简单的例子: ...

  8. iPhone实现自定义多选列表

    好久没更新博客了,今天写了一个自定义的多选列表,可以跟爱学习的各位进行分享,首先我们先来看一下效果图: 一般大家都是用UITableView自己的编辑模式来实现CheckBox的,这里我们用自定义Ce ...

  9. LeetCode(42)-Best Time to Buy and Sell Stock(卖股票)

    题目: Say you have an array for which the ith element is the price of a given stock on day i. If you w ...

  10. Python可视化TVTK库初使用

    本周学习了初步的TVTK库的安装及使用方法,第一次通过tvtk.CubeSource方法建立了一个长方体对象.对TVTK的接触有了新的体会. 首先,在网上下载了以下五个库并按顺序通过pip指令在cmd ...