• SpringIOC的bean自动注解(Resource,Autowired)


    目录

    注解方式注入 Bean

    @Resource注解

    @Resource注解实现自动注入(反射机制)

    实现方式:

    @Autowired实现bean自动注入

    实现Bean对象的自动注入

    使用方法与Resource方法一样

    出现的问题(org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 36; schema_reference.4)


    注解方式注入 Bean


    对于bean的注入,除了使用xml配置以外,可以使用注解配置。注解的配置,可以简化配置文件,提高开发的速度,使程序看上去更简洁。对于注解的解释,Spring对于注解有专门的解释器,对定义的注解进行解析,实现对应bean对象的注入。通过反射技术实现。
     

    @Resource注解

    @Resource注解实现自动注入(反射机制)

    1. 默认根据属性字段名称查找对应的 bean对象(属性字段的名称与bean标签的id属性值相等)·如果属性字段名称未找到,则会通过类型(Class类型)查找
    2. 属性可以提供set方法,也可以不提供set方法
    3. 注解可以声明在属性级别或set方法级别
    4. 可以设置name属性,name属性值必须与bean标签的id属性值一致;如果设置了name属性值,就只会按照name属性值查找bean对象
    5. 当注入接口时,如果接口只有一个实现则正常实例化;如果接口存在多个实现,则需要使用name属性指定需要被实例化的bean对象

    实现方式:

    一,配置xml文件

    1. "1.0" encoding="UTF-8"?>
    2. "http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans
    6. http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/context
    8. http://www.springframework.org/schema/context/spring-context.xsd">
    9. package="com.lsf"/>
    10. "userService" class="com.lsf.service.UserService">
    11. "userdao" class="com.lsf.dao.Userdao">

    二,使用注解

    1. package com.lsf.service;
    2. //导入需要的类
    3. import com.lsf.dao.Userdao;
    4. //导入注解
    5. import javax.annotation.Resource;
    6. public class UserService {
    7. //使用自动注入(尽量属性字段名称与配置文件中的bean的id一致)
    8. @Resource
    9. private Userdao userdao;
    10. public void test(){
    11. System.out.println("userService.....");
    12. userdao.test();
    13. }
    14. }

    三,启动

    1. package com.lsf;
    2. import com.lsf.service.UserService;
    3. import org.springframework.beans.factory.BeanFactory;
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;
    5. public class Starter {
    6. public static void main(String[] args) {
    7. BeanFactory factory = new ClassPathXmlApplicationContext("spring.xml");
    8. UserService userService = (UserService) factory.getBean("userService");
    9. userService.test();
    10. }
    11. }

    现象

     

    @Autowired实现bean自动注入

    实现Bean对象的自动注入

    1. 默认根据类型(CLass)查找,与属性字段名无关
    2. 属性字段可以提供set方法也可以不提供
    3. 注解可以声明在属性字段级别或set方法级别
    4. 如果需要役置属性字段通过id属性值查找,则需要结合(Qualifier注解使用,并设置cQualifier注解的vaLue属性值(value属性值与bean的id属性值一致)


    使用方法与Resource方法一样

    出现的问题(org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 36; schema_reference.4)

    出现问题的原因:xml配置文件出现了问题,导致找不到文档

    解决办法(自己打容易打错所有,还是使用复制粘贴吧):

    xml配置

    1. "1.0" encoding="UTF-8"?>
    2. "http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans
    6. http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/context
    8. http://www.springframework.org/schema/context/spring-context.xsd">
    9. package="com.lsf"/>
    10. "userService" class="com.lsf.service.UserService">
    11. "userdao" class="com.lsf.dao.Userdao">

  • 相关阅读:
    利用数据分析告警机制,实现鸿鹄与飞书双向集成
    OpenGL(十五)——Qt OpenGL三种不同的纹理滤波方式、光照、物体的移动
    网站/顶会/工作组
    【Linux初阶】认识冯诺依曼结构
    票据传递攻击
    刷完 20 年京东架构师的 Redis 优化手册,把面试官给面哭了
    C# 实现迷宫游戏
    买极米NEW Z8X的我后悔了,换成当贝F3 Air可真香
    vue3项目的创建和配置文件
    python代码笔记230910
  • 原文地址:https://blog.csdn.net/weixin_47514459/article/details/126820074