代码:

spring属性注入-注解注入-半注解后序.zip - 蓝奏云文件大小:15.2 K|https://www.lanzouw.com/iCjbVvpvxaf

上一个博客的半注解是,一个类在xml定义java bean,一个类使用注解方式定义java bean,这节我们将所有的类都使用注解来定义java bean

1、创建Category 和Product

package com.how2j.pojo;
//使用注解配置, 不需要定义set函数,import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
//定义java bean, id为c
@Component("c")
public class Category {@Value("4")private int id;@Value("Category 1")private String name;//如果使用注解定义java bean,必须有无参构造函数。下面存在有参构造方法,所以如果使用注解必须手动写无参构造函数public Category() {}public Category(int id, String name) {this.id = id;this.name = name;}@Overridepublic String toString() {return "Category{" +"id=" + id +", name='" + name + '\'' +'}';}
}
package com.how2j.pojo;
//这个类使用注解配置
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import javax.annotation.Resource;//因为这个类没在xml文件中定义,所以使用注解来将这个类设置成java bean, 并设置id
@Component("p")
public class Product {//普通属于类型@Value("2")private int id;@Value("product test")private String name;//引用类型属性注入//这里的c是java bean的id,即Category中定义的@ComPonet("c")@Resource(name="c")private Category category;@Overridepublic String toString() {return "Product{" +"id=" + id +", name='" + name + '\'' +", category=" + category +'}';}
}

3、编写xml,这里的xml只用来进行组件扫描,不再定义java bean

<?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.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--    半注解方式:一个类在xml中定义,一个类使用注解定义--><!--开启组件扫描, 因为我们使用注解来注入属性,所以--><context:component-scan base-package="com.how2j.pojo"></context:component-scan><!--    这个xml文件只用来开启组件扫描,不定义java bean-->
</beans>

4、测试

package test;import com.how2j.pojo.Category;
import com.how2j.pojo.Product;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestSpring {@Test//spring的控制翻转public void test1(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml" );//这里的c是在定义xml文件中Category c = (Category) context.getBean("c");System.out.println(c);}@Test//测试spring的属性注入public void test2(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml" );//这里的p是定义在类里的, 即@Component("p")Product p = (Product) context.getBean("p");System.out.println(p);}
}

补充:下面是目录结构

2.3.2 spring属性注入-注解注入-半注解注入-后序相关推荐

  1. 2.3.1 spring属性注入-注解注入-半注解方式-前序

    注解注入自由度高,可以对部分类使用注解,也可以对所有类都使用注解. 下面代码是的Category使用xml定义java Bean, Product使用注解来定义java Bean 1.定义Catogo ...

  2. Spring Boot2.x-05Spring Boot基础-使用注解完成依赖注入

    文章目录 概述 @Autowired注解 @Autowired的匹配原则 @Autowired的 required 属性 使用@Primary 和@Qualifier消除@Autowired的歧义 @ ...

  3. java元婴期(18)----java进阶(spring(2)----DI(依赖注入)基于注解的IOC与DI配置properties)

    1.依赖注入的概念 依赖注入:Dependency Injection.它是spring框架核心ioc的具体实现. 我们的程序在编写时,通过控制反转,把对象的创建交给了spring,但是代码中不可能出 ...

  4. spring项目属性注入和bean管理xml 注入一般属性和集合属性

    IOC 介绍: 在Spring的应用中,Spring IoC容器可以创建.装配和配置应用组件对象,这里的组件对象称为Bean. Bean的实例化 在面向对象编程中,想使用某个对象时,需要事先实例化该对 ...

  5. 零配置 之 Spring 注解实现Bean依赖注入

    转载自  [第十二章]零配置 之 12.2 注解实现Bean依赖注入 --跟我学spring3 12.2  注解实现Bean依赖注入 12.2.1  概述 注解实现Bean配置主要用来进行如依赖注入. ...

  6. Spring IoC和DI XML方式 注解方式 依赖注入 AOP面向切面

    初识Spring框架 时代变迁 原始时代我们用一个jsp搞定一切,但如此开发大型项目时我们遇到了问题,前端美化的代码和后端的代码交织,代码中又有html.js.css样式,又有业务逻辑和数据库访问代码 ...

  7. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )

    文章目录 前言 一.获取 Activity 中的所有方法 二.获取方法上的注解 三.获取注解上的注解 四.通过注解属性获取相关事件信息 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

  8. 2.1、spring属性注入-Set方法注入

    代码地址:spring2.1.zip - 蓝奏云文件大小:15.1 K|https://www.lanzouw.com/imlEwvptwre Set方法注入的原理是spring先通过指定id的类的无 ...

  9. Spring属性注入的三种方式(超详细)

    属性注入的三种方式 使用set方法进行注入 使用有参构造函数进行注入 使用p名称空间注入 首先了解下面两个名词的含义: IOC:控制反转(Inversion of Control,缩写为IoC),是面 ...

最新文章

  1. Java中创建对象的几种方式
  2. 一步一步SharePoint 2007之二十五:编写一个最简单的WebPart(3)——添加WebPart
  3. linux qt应用程序全屏,QT在ubuntu下实现界面全屏,侧边栏隐藏,上边栏隐藏【实例】...
  4. lintcode:合并排序数组
  5. Android elevation的使用阴影
  6. 关于分布式系统架构模块通讯方式选择的问题
  7. 商业有规律,赚钱有方法,不要在盲目努力了
  8. Android Studio调试功能使用总结【转】
  9. w10安装ubuntu_Windows10安装ubuntu18.04双系统教程
  10. window10安装黑苹果
  11. 如何提高python代码运行速度_一行代码让你的python运行速度提高100倍
  12. mathml解析引擎MathPlayer的缺陷
  13. Marvelous Designer 服装设计与模拟
  14. Oliver的救援(广搜练习题)
  15. [渝粤教育] 平顶山学院 学前心理学 参考 资料
  16. 三菱FX系列PLC备份电池电压低报警的处理方法
  17. 【Paper】WISDM:Activity Recognition using Cell Phone Accelerometers
  18. 3月12日公开短线黑马牛股请点击验证
  19. 网页崩溃原因软件测试,支招:原来这些才是APP崩溃的主要原因!资深技术大牛测试经验总结...
  20. Scratch -> C++画图->信奥(C++)学习导航

热门文章

  1. Dubbo系统间通信
  2. Thymeleaf语法变量
  3. Java继承Thread类创建多线程
  4. python socket能做什么_用python写一个聊天小程序!和女朋友的专属聊天工具!
  5. 阿里工程师总结的《MySQL 笔记高清 PDF 》 开放下载
  6. 技术面试官告诉你面试应该怎么准备?
  7. Java基础提升篇:equals()与hashCode()方法详解
  8. 【JavaSE03】Java中分支语句-概念
  9. 进腾讯了!(实习面经分享)
  10. 键盘鼠标录制哪个好用_好看好用还不贵的那种键盘鼠标真的有吗?这次还真让我碰到了...