注解注入自由度高,可以对部分类使用注解,也可以对所有类都使用注解。

下面代码是的Category使用xml定义java Bean, Product使用注解来定义java Bean

1、定义Catogory和Product

package com.how2j.pojo;
//这个类使用xml配置
public class Category {private int id;private String name;//定义无参构造函数,如果提供了Set方法,则可以使用Set方法注入属性public Category() {}//定义有参构造函数,可以使用构造方法来注入属性public Category(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "Category{" +"id=" + id +", name='" + name + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.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;//引用类型//@Resource(name="c")private Category category;@Overridepublic String toString() {return "Product{" +"id=" + id +", name='" + name + '\'' +", category=" + category +'}';}
}

2、编写xml

注意:Product是使用注解进行定义java bean的,不在xml文件中,因此,spring必须开启组件扫描来找到Product的java bean,即指定spring的扫描包,下面的base-packag的值是需要扫描的包,即@Componet()所在目录

<?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><bean id="c" class="com.how2j.pojo.Category"><constructor-arg name="id" value="1"/><constructor-arg name="name" value="category 1"/></bean></beans>

3、测试

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.1 spring属性注入-注解注入-半注解方式-前序相关推荐

  1. JAVA_OA管理系统(四)番外篇:使用Spring注解注入属性

    本文介绍了使用Spring注解注入属性的方法.使用注解以前,注入属性通过类以及配置文件来实现.现在,注入属性可以通过引入@Autowired注解,或者@Resource,@Qualifier,@Pos ...

  2. 2.3.2 spring属性注入-注解注入-半注解注入-后序

    代码: spring属性注入-注解注入-半注解后序.zip - 蓝奏云文件大小:15.2 K|https://www.lanzouw.com/iCjbVvpvxaf 上一个博客的半注解是,一个类在xm ...

  3. spring学习--基于注解 注入属性

    注解共三种: (1)@Autowired:根据属性类型进行自动装配 (2)@Qualifier:根据名称进行注入,这个@Qualifier 注解的使用,和上面@Autowired 一起使用 ​(3)@ ...

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

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

  5. Spring bean注入之注解注入-- @Autowired原理

    之前我们已经讲述过bean注入是什么了,也使用了xml的配置文件进行bean注入,这也是Spring的最原始的注入方式(xml注入). 本节课就讲注解注入. 主要讲解的注解有以下几个: @Autowi ...

  6. Spring 3.0 注解注入详解

    Spring 3.0 注解注入详解 2011-04-15 09:44 17ZOUGUO ITEYE博客 我要评论(1) 字号:T | T AD: 一.各种注解方式 1.@Autowired注解(不推荐 ...

  7. Spring依赖注入:注解注入总结

    更多11 spring 依赖注入 注解 java 注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.C ...

  8. spring基础——注解注入

    Spring 针对 Bean 管理中创建对象提供注解 (1)@Component (2)@Service (3)@Controller (4)@Repository 配置文件 1.注解注入要先引入co ...

  9. spring:setter注入构造器注入注解注入

    一.内容回顾 简述对spring框架的了解 优点 高内聚低耦合 可拔插式设计模式 XML配置 便于维护 Sping 可以和各大优秀的框架很好结合(Struts2 springmvc mybatis h ...

最新文章

  1. Javascript Tip(1) 操作剪贴板
  2. 关于html5和css3的新特性
  3. wgan 不理解 损失函数_AI初识:深度学习中常用的损失函数有哪些?
  4. ZStack获1亿元B轮融资,深创投领投、阿里云继续跟投
  5. 我用AI回怼美女汽车销售系列[yolo车牌识别](五) 完结
  6. Jwt Token 的刷新机制设计
  7. Oracle 之instant client
  8. oracle 数字处理函数,ORACLE 数字型函数
  9. 黑鸭宣布开源项目-年度新秀
  10. CentOS 7 安装开发者环境
  11. Abp 为Swagger接口页添加详细注释
  12. 2021白盒测试常用工具介绍【建议收藏】
  13. java识别验证码图片_Java识别图像、验证码
  14. 他如何从一位专车司机成功变身CEO?
  15. CloudFoundry 环境上的 Java 应用开发如何指定 build pack
  16. 【LTE】Qualcomm LTE Packets log 分析(三)LTE Access Stratum Log Analysis
  17. python update函数会调用哪些内置函数_Python字典的内置函数中没有 append()操作,可以用 update()来更新字典内容...
  18. 过程计算机系统 pcs,炼钢AOD炉过程计算机系统设计与实现-软件工程专业毕业论文.docx...
  19. 智芯传感微差压气体压力传感器在CPAP治疗中发挥关键作用
  20. far指针与near指针

热门文章

  1. 2016年蓝桥杯省赛题解
  2. Codeforces Round #479 (Div. 3)【完结】
  3. 3.3.1 差错控制(检错编码)
  4. VScode的基础设置
  5. Volatile可见性
  6. hive hql文档_30分钟入门 Hive SQL(HQL 入门篇)
  7. c++中函数放在等号右边_如何从C或C++中的函数返回多个值?
  8. 神奇的 SQL 之擦肩而过 → 真的用到索引了吗
  9. Java仿百度网盘,拿来学习/搞外快,都是极好的选择
  10. xgboost算法_陈天奇做的XGBoost为什么能横扫机器学习竞赛平台?