• 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">

  • 相关阅读:
    重置手机网络虽然麻烦,但效果杠杠的!如何重置安卓手机的网络
    UWA Pipeline 新功能|构建分析、自动化测试支持iOS平台
    Kubernetes-in-action (二)
    常见排序算法讲解(图解+代码+代码讲解)
    黎曼猜想历史进展-大事记
    C# ref 学习1
    Java注解系统学习与实战
    JAVA【异常】详解
    MySQL连接方式: Unix套接字 & TCP/IP
    文件包含漏洞笔记
  • 原文地址:https://blog.csdn.net/weixin_47514459/article/details/126820074