学习
实践
活动
工具
TVP
写文章

Spring bean注入注解注入-- @Autowired原理

之前我们已经讲述过bean注入是什么了,也使用了xml的配置文件进行bean注入,这也是Spring的最原始的注入方式(xml注入)。 本节课就讲注解注入。 修饰的字段都可以自动注入 3、默认情况下,使用@Autowired注解的属性一定要被装配,如果在容器中找不到该类型的bean注入,就会报错。 、@Controller、@Component 这几个注解的含义都是一样的,都是写在类上面或者接口上面,将自动注册到Spring容器。 从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext @Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。

6530

Spring使用注解配置依赖注入

大部分情况下,使用Spring配置依赖注入时,都是使用注解来进行配置,因为注解比xml要方便和简单。 接下来简单介绍一下注解的配置方式,首先要让Spring支持注解,编辑Spring配置文件内容如下: <?xml version="1.0" encoding="UTF-8"? 加上这个注解表示该类受到Spring的管理,注解的值为该类的id,该注解的作用相当于xml中的bean标签 @Component("stu") public class Student { 如果需要注入自建类型,有两个注解可以做到,分别是 @Resource 和 @Autowired,但是要想通过这两个注解来配置依赖注入,被注入的对象需要写上 @Component 注解: package 历史:@Autowired 属于Spring注解,@Resource 不属于Spring注解,是JDK1.6支持的注解 共同点:装配bean.

22130
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器6.58元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring系列之新注解配置+Spring集成junit+注解注入

    Spring系列之注解配置 Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率 你本来要写一段很长的代码来构造一个 Beam对象,但是如果使用注解的话只要使用一个注解符号即可 ? 接下来我们再来讲讲如何使用注解进行注入 方式一:使用@Autowired+@Qualifier 目的:创建一个userdao类将其注入带service类中 userdao类代码 package com.pjh.dao > 注解扫描的配置:context:component-scan 引入其他文件: Spring注解 @Configuration 用于指定当前类是一个Spring配置类,创建容器时会从该类上加载注解 来集成junit,用springjunit来创建spring容器, 我们只需将配置文件的名称告诉他们即可,将需要的bean直接在容器中进行注入 Spring集成junit的步骤 需要导入的jar包 <

    34520

    07 Spring框架 依赖注入(四)基于注解的依赖注入

    前面几节我们都在使用xml进行依赖的注入,但是在实际的开发中我们往往偏爱于使用注解进行依赖注入,因为这样更符合我们人的思维,并且更加快捷,本节就来讲述Spring基于注解的依赖注入: 信息注入注解 @Component 注解:表明当前类为一个组件(bean) @Value注解:为bean注入值 @Autowired注解 :为bean注入其他bean(byType方式) @Qualifier注解:与Autowired注解联用实现 byName方式注入 @Resource注解:这个不是Spring提供的注解,这个是jdk提供的注解,要求jdk版本1.6以上,这个注解可以实现Autowired和Resource的功能。 除了信息注入注解,还有: ---- 初始化后方法和销毁前方法注解 @PostConstruct:被注解的方法为初始化完成方法 @PreDestroy:被注解的方法为销毁前方法 @PostConstruct 除了xml和一般注解配置,Spring还提供了Java配置,什么叫java配置,即创建一个类来进行信息的注入,它和注解配置相似,不同的是它不是在bean的实现类中进行注解,而是新创建一个类进行配置:

    72170

    手把手教你使用 Spring IOC 容器完成注入操作(xml注入 + 注解注入

    setter 注入的简化操作 2.3 复杂数据类型注入 2.3.1 集合数据类型注入使用场景 2.3.2 集合类型的数据注入 三、使用注解完成 Spring 的 IOC 注入 3.1 用于创建对象的注解 ) 3.2.3 基于 Resource 的注解 四、Spring IOC 注入总结 本文的代码过多,但是每个点我会尽可能的写的很详细 一、为什么要使用 Spring? :使用注解提供 二、Spring IOC 的依赖注入(使用 xml 完成注入) 2.1 使用构造函数完成依赖注入 2.1.1 标签的使用讲解 使用的标签:constructor-arg 标签出现的位置: 这个注解就是将我们在上面用到两个注解替换成一个:@Resource(name = "accountDao") ,产生的结果是相同的,这里我就不放截图了 四、Spring IOC 注入总结 首先在配置文件中加入 :,告知 Spring,我们要使用注解,然后我们在里面填写:base-package 的值,告知 Spring 他要扫描的包 然后在接口的实现类中的类上添加注解(创建对象的注入):@Component(

    24321

    Spring 注解之@Import 注入的各种花活

    今天来分享一下 pig4cloud 中涉及的 @Import 的注入形式。通过不同形式的注入方式,最大程度使得架构简洁。 @Import导入一个组件 来看 EnablePigxDynamicRoute 这个注解,当我们需要开始动态数据源时,只需要在main 方法加上此注解即可。 .Dog"), "error dog bean"); } } 注意 Dog 并未增加上文的声明式注解注入了一个全类型名称的Bean ImportSelector 接口 顾名思义导入的选择器,当 匹配逻辑查询出来一堆要注入的全类名 return new String[]{"com.pig4cloud.spring.learn.demo1.Dog"}; } } @Import SecurityConstants.RESOURCE_SERVER_CONFIGURER, beanDefinition); } } 这也就意味着,若使用EnablePigxResourceServer 注解即可开启

    29720

    Spring 注解之@Import 注入的各种花活

    今天来分享一下 pig4cloud 中涉及的 @Import 的注入形式。通过不同形式的注入方式,最大程度使得架构简洁。 @Import导入一个组件 来看 EnablePigxDynamicRoute 这个注解,当我们需要开始动态数据源时,只需要在main 方法加上此注解即可。 .Dog"), "error dog bean"); } } 注意 Dog 并未增加上文的声明式注解注入了一个全类型名称的Bean ImportSelector 接口 顾名思义导入的选择器,当 匹配逻辑查询出来一堆要注入的全类名 return new String[]{"com.pig4cloud.spring.learn.demo1.Dog"}; } } @Import Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注

    24320

    Spring注解的(List&Map)特殊注入功能

    项目框架是基于Spring boot进行开发。其中有两处Spring注解花费了大量的时间才弄明白到底是怎么用的,这也涉及到spring注解的一个特殊的注入功能。 首先,看到代码中有直接注入一个List和一个Map的。 当实例化一个DemoService之后,另外一个类采用泛型注入List,Spring竟然成功的将实例化的对象放入List之中。思路打开之后,针对Map的就更好说了。 Spring会将service的名字作为key,对象作为value封装进入Map。 运行之后,访问http://localhost:8080/demo/test 执行结果如下: 我被调用了 ===============分割线============= 我被调用了 原来,在不知不觉中Spring

    76590

    Spring学习笔记(2)一DI依赖注入Spring Bean配置、注解原理、动态注入

    Spring容器使用依赖注入(DI)来管理组成应用程序的组件。这些对象被称为Spring Beans。 实现spring注入一般有两种方法,配置文件,或者用注解。各有不同的作用。 容器获得其上的哪些对象进行实例化,配置和组装通过阅读提供的配置元数据的说明。 ,属性注入或者初始化bean时会调用对应的注解处理器进行处理。 3、bean注入 我们可以自由地使用任何标准的Spring框架技术去定义beans和它们注入的依赖。 自动从spring的上下文找到合适的bean来注入 @Service :一般用于修饰service层的组件 @Repository :使用@Repository注解可以确保DAO或者repositories

    23040

    Spring-通过注解注入Bean的几种方式(二)

    Spring通过注解注入Bean,这里记录一下注入List、Map、String类型的注入 MyBean.java import org.springframework.beans.factory.annotation.Autowired List类型 在MyBean.java中生成List的Set、Get方法,在Set方法上使用@Autowired注解,告诉Spring上下文环境中需要一个List类型的Bean 在BeanConfig.java 如果使用与泛型相同Bean注入,使用@Order控制顺序,@Order注解的值为int类型,值不需要约束从下标0开始,不需要连续,例如:@Order(10)、@Order(20),@Order(10)注解下的值就会排在前面 在MyBean.java中生成Map的Set、Get方法,在Set方法上使用@Autowired注解,告诉Spring上下文环境中需要一个Map类型的Bean 2. 类型的Bean和与注入Map<String,Integer>类型泛型value类型相同的Bean(也就是返回值为Integer类型的方法,在方法上加了@Bean注解),Spring会优先考虑返回值与注入泛型中

    6430

    Spring-通过注解注入Bean的几种方式(一)

    用到的注解 @Configuration :定义配置类,代替了xml文件 @ComponentScan(value = “com.aa”) :包扫描,Spring会自动扫描com.aa同级以及子类包下的所有类 @Component : 声明把该类交由Spring,由Spring来帮你完成实例化 @Autowired : 注入Spring完成自动装配 通过构造函数/Set方法/@Autowired方式 AnotherBean.java MyBean { private AnotherBean anotherBean1; private AnotherBean anotherBean2; //使用@Autowired注入 * anotherBean3=com.example.demo.spring.AnotherBean@2ca47471} * 这里anotherBean1 、anotherBean2、anotherBean3的内容时相同,说明是同一个实例, * 解释一下,这样是因为在AnotherBean的类上使用@Component注解,默认为单利模式

    5320

    spring进行mock测试

    什么是mockmock指的是通过模拟数据来使程序完成流程的运行,简单说一句就是自己造数据模拟流程。 mock有哪些工具? testing.html https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/mock ReflectionTestUtils 为spring自带的一个mock工具,当然只是冰山一角,需要更详细了解可以上官网。 ; /** * @Auther: csh * @Date: 2020/10/12 17:21 * @Description:测试:使用ReflectionTestUtils解决依赖注入 */ ,通过mock自己模拟一些数据进行测试先把自己的流程跑通,后面再统一联调,而spring提供的mock也很多,ReflectionTestUtils只是其中的一种,可以看看官方文档统一尝试,是一种提升工作效率和质量不错的工具

    34720

    注解与依赖注入

    -3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop -3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context -3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop -3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx

    38160

    spring注解有哪些_Spring 注解

    Spring注解 @Configuration   一.@Configuration的作用     二. @Configuration的Spring容器启动方式   三.不加@Configuration的@Bean的解析   四.加@Configuration的@Bean的解析   五.总结与疑问 一.注解作用 注解形式的Spring容器的启动方式(非Web项目) 方式1. 分析不加@Configuration 只是一个启动类就可以解析@Bean注解   3.1 简单绘制下我理解的Spring容器bean的初始化流程:1-2是Spring容器初始化经历的过程,而3-9则是每一个 AppConfig1类的@Bean注解的@Bean也注册到Spring容器中了; 结束postProcessBeanDefinitionRegistry 方法时候打印下已经注册的BeanDefinition

    5910

    如何Mock被@Value注入的属性

    参考:How do I mock an autowired @Value field in Spring with Mockito?

    73720

    Spring用于注入数据的注解@Component@Controller@Service@Repository

    常见IoC注解按照作用分类 除了一般的maven需要这个jar包 我们也需要告知spring在创建容器时要扫描的包,配置所需要的标签不是在beans的约束中,而是一个名称为 context名称空间和约束中 用于创建的@Component注解 用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的 @Component: 作用:用于把当前类对象存入spring 当我们不写时,它的默认值时当前类名,且首字母改小写 @Controller:一般用在表现层 @Service:一般用在业务层 @Repository:一般用在持久层 以上三个注解他们的作用和属性与 他们三个是spring框架为我们提供明确的三层使用的注解,使我们的三层对象更加清晰 在实现的时候改成 public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); //用注解搞把类名复制过来改成小写 IAccountService as

    49600

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

    @Primary 不推荐使用 @Qualifier推荐使用 在构造函数/方法中使用@Autowired 概述 Spring Boot2.x-04Spring Boot基础-使用注解装配bean 中讲了如何将 xml的方式去描述Bean之间的依赖关系,请参考以前的博客 Spring-bean之间的关系 Spring-基于注解的配置[02自动装载bean] ---- @Autowired注解 举个例子: Manager 通过结果可以知道,通过注解@Autowired 成功的将JavaEngierr注入到了Manager实例中。 因为另外一个类也可以标注@Primary,Spring又无法知道注入哪个了。 Spring IoC 容器 , 当发现有多个同样类型的 Bean ,请优先使用标注了@Primary的这个bean进行注入

    13330

    【SpringBoot注解-3】Bean注入相关注解

    常见注解总结之Bean注入 SpringBoot中要实现bean的注入,依赖三种注解: @Autowired @Inject @Resource 1 @Autowired 在Spring Boot应用启动时 当容器扫扫描到@Autowired注解时,就会在IoC容器就会找相应类型的Bean,并且实现注入。 1.1 @Autowired特点 @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired @ 的注解,@Resource是J2EE的注解,根据导入注解的包名就可以知道。 因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。

    55920

    ServerEndpoint注解无法注入NoticeService

    也扫描到了,┭┮﹏┭┮,这到底是怎么费事,然后就查阅各种文档、博客,结论如下: 1、可能原因:自己编写的nticeService没有放到spring容器中(导致没有实例化)。经过测试,排除此原因。 不管单独使用也好,结合spring也好,或者结合SpringBoot也罢,他都是多对象的。 3、问题原因:WebSocket是多对象的,使用的spring却是单例模式。这两者刚好冲突。 @Autowired注解注入对象是在启动的时候就把对象注入,而不是在使用A对象时才把A需要的B对象注入到A中。而WebSocket在刚刚有说到,有连接时才实例化对象,而且有多个连接就有多个对象。 由此得知,RedisUtil根本就没有注入到WebSocket当中。 4、解决问题:解决的方式有两种。 1.让Redis属于WebSocketServer这个类 2.在运行时,动态的从spring容器中取出nticeService。

    1.2K30

    Spring Boot、Dubbo项目Mock测试踩坑与总结

    本文是对Spring Boot、Dubbo项目进行Mock测试的总结与踩坑实录。 搜索了一圈,居然没发现类似的文章,莫非用Dubbo的朋友们都不Mock测试,或者有其他的办法测试吗? 所注解的方法,new出来的对象,必然在Spring容器中)。 执行后,打印结果如下: MyApi中注入的RemoteApi是:com.alibaba.dubbo.common.bytecode.proxy0@541afb85 Spring容器中注入的RemoteApi 由该结果,可以知道2点: (1) Dubbo的@Reference注解拿到的一个代理; (2) @Reference生成的代理并不在Spring容器中(如果Dubbo的Reference的代理也是容器中 答案很简单——如果我们在执行单元测试之前,将StoreApi中注入的RemoteApi换成Spring容器中的实例(即我们Mock的那个对象),那么问题就可以得到就解决。

    2.7K81

    扫码关注腾讯云开发者

    领取腾讯云代金券