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

  • 相关阅读:
    (70)Verilog读文件函数【readmemb】
    企业如何选型iPaaS平台
    Ubuntu18.04安装docker及nvidia docker、NVIDIA Container Toolkit
    DuiLib中常用各种RGB颜色对照表
    C#实现最大公约数和最小公倍数
    Linux内核调试工具——Debugfs
    回字文判断
    Vue-2.9单页应用程序
    Javascript知识【jQuery样式操作&案例:jQuery隔行换色】
    深入理解Java虚拟机-垃圾收集器与内存分配策略
  • 原文地址:https://blog.csdn.net/weixin_47514459/article/details/126820074