spring注解注入原理
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于spring注解注入原理内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在spring注解注入原理相关知识领域提供全面立体的资料补充。同时还包含 safari浏览器、samba、SAMP 的知识内容,欢迎查阅!
spring注解注入原理相关知识
-
深入理解spring注解@PropertySource的实现原理之前文章简单的介绍了一下@Value和@PropertySource注解的使用,没有看过的同学可以点击查看:一分钟学会spring注解之@value注解一分钟学会spring注解之@PropertySource注解今天这篇文章将给大家详细的介绍一下@PropertySource注解实现原理首先让我们一起看下@PropertySource的源码如下:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Repeatable(PropertySources.class)public @interface PropertySource { /** * 资源的名称 */ String name() default ""; /** * 资源文件路径,
-
最详细的 Spring IOC 注入 (xml 注入 + 注解注入)@[toc](Spring IOC 容器的基本使用) 一、为什么要使用 Spring? 1.1 传统的 MVC 架构的程序 1.2 程序耦合性过高? 1.3 如何解耦? 1.4 Spring IOC 的依赖注入 二、Spring IOC 的依赖注入 2.1 使用构造函数完成依赖注入 2.1.1 标签的使用讲解 2.1.2 构造函数依赖注入的优缺点 2.1.3 使用构造函数完成依赖注入的实例 2.2 使用 setter 完成注入 2.2.1 使用 setter 完成依赖注入的功能 2.2.2 基于 setter 完成依赖注入的分析 2.3 复杂数据类型注入 2.3.1
-
深入理解spring注解之@ComponentScan注解今天主要从以下几个方面来介绍一下@ComponentScan注解:@ComponentScan注解是什么@ComponentScan注解的详细使用1,@ComponentScan注解是什么其实很简单,@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中2,@ComponentScan注解的详细使用做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中,好下面咱们就先来简单演示一下这个例子在包com.zhang.controller下新建一个UserController带@Controller注解如下:package com.zhang.controller;import
-
spring注解注入:<context:component-scan>详解spring从2.5版本开始支持注解注入,注解注入可以省去很多的xml配置工作。由于注解是写入java代码中的,所以注解注入会失去一定的灵活性,我们要根据需要来选择是否启用注解注入。我们首先看一个注解注入的实际例子,然后再详细介绍context:component-scan的使用。如果你已经在用spring mvc的注解配置,那么你一定已经在使用注解注入了,本文不会涉及到spring mvc,我们用一个简单的例子来说明问题。本例中我们会定义如下类:PersonService类,给上层提供Person相关操作PersonDao类,给PersonService类提供DAO方法Person类,定义Person相关属性,是一个POJOApp类,入口类,调用注解注入的PersonService类PersonService类实现如下:package cn.outofmemory.spring; import org.springframework.beans.factory.annotat
spring注解注入原理相关课程
-
使用Google Guice实现依赖注入 本课程将带领大家通过Google Guice来系统的学习DI思想中的绑定,注入,生命周期,aop等方面的技巧。并示范Guice和Spring Boot如何协作。对于熟悉Spring的同学,学完本课后可以了解两者异同,加深对DI和Spring的理解。不只是为了单纯教授Gucie的用法,而是以Guice为媒介,希望使同学们在编程能力上能有所提高。 双十一双重好礼相送: 第一重:课程加量不加价; 第二重:小伙伴们可以凭借好评召唤幸运之神;将从评价用户中抽取三名幸运之星,赠送价值:499美元折合人民币约:3500RMB,请看图二; 【抽奖结果将在16-20号之间通过评价回复公布】活动详情传送门:https://coding.imooc.com/class/evaluation/180.html#Anchor
讲师:ccmouse 高级 9896人正在学习
spring注解注入原理相关教程
- 3.1 EnableHystrix 注解详解 @EnableHystrix 注解是在 Spring Cloud 框架中使用 Hystrix 的基础必须注解,即如果想要在 Spring Cloud 框架中使用 Hystrix ,就必须要先声明 @EnableHystrix 注解,来告诉 Spring Cloud 框架,你要在其中使用 Hystrix 了。EnableHystrix 注解是作用在类上的注解,该注解没有任何参数,可以理解为,只是一个在 Spring Cloud 框架中来开启或关闭 Hystrix 的开关,具体用法我们看以下代码。@EnableHystrixpublic class DemoApplication { // 现在,同学们不需要理解main方法,重点看所使用的注解即可 public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}代码解释:第 1 行,我们将 @EnableHystrix 注解放到了 Spring Boot 项目的启动类上,这就表示,我们开启了 Hystrix ,即我们可以在项目中使用 Hystrix 了。Tips: 在 Spring Boot 项目中,如果想使用 Hystrix ,就一定先要在项目的启动类上,添加上述注解,否则,即使将 Hystrix 的依赖引入到了项目中,也无法使用 Hystrix 及任何功能特性。
- 2.3 注解注入规则 刚刚通过三个注解都可以完成了 bean 的实例化注入,通过测试代码也获取到了容器中的三个对象实例,那么这里不知道大家是否发现一个问题:我们知道,Spring 这个容器本质是个 map 集合来存储实例化后的对象。既然是个 map 集合,就应该对应的有 key 和 value。我们都知道 value 肯定是实例化后的 bean ,那么 key 是什么呢?注入规则:1. 四种注解都支持 value 的属性作为自定义的 bean id ;2. 如果 value 属性没有指定,那么默认以类的简单名称(类名首字母小写)作为 bean 对象的 id。所以我们可以看到:当我们只使用注解没有自定义 id 的时候可以通过,每个类的首字母小写来获取对象实例,那么如果有了自定义的 id,上述代码是否继续可用呢?自定义 id 获取实例:改造类上面的注解,设置自定的 id,更改的注解如下:@Controll("uc")@Service("us")@Repository("ud")测试结果:测试结果:为了区分测试结果,我在测试代码中,只修改了 controller 的获取方式,将 id 改成了 uc 。service 和 dao 并没有修改。从控制台打印可以看到,只有 controller 对象可以成功获取,service 和 dao 都失败了,因为我们已经使用了自定义的 id,所以容器中没有默认的以类名作为 id 的 bean 对象实例。
- Java 注解 本小节我们将学习 Java5 引入的一种机制 —— 注解(Annotation)。通过本小节的学习,你将了解什么是注解,注解的作用,Java 中内置注解有哪些以及注解的分类,如何自定义注解,如何处理注解等内容。
- 2.2 @Autowired 注解 1. 为了测试效果,我们创建 Service 和 Dao 两个类, Dao 作为 Service 的依赖。代码如下://service实现类的代码@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserDao userDao; public void saveUser() { System.out.println("执行service中的保存逻辑"); }}//dao实现类的代码@Repositorypublic class UserDaoImpl implements UserDao { public void saveUser() { System.out.println("执行dao的保存方法"); }}代码解释:上面代码可以看到,两个类的实例化方式都是通过注解注入到容器, 并且在 service 实现类中的 userDao 属性上面加了注解 @Autowired。我们首先测试下:能否通过这个注解,实现依赖注入,另外再测试下它是否是按照类型注入。2. 配置文件的内容为注解实现 IoC。配置文件解释: 注解实现 IoC 的章节说过,需要通过组件扫描来实例化容器。3. 编写测试代码public class SpringAnTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); UserService userService = context.getBean(UserService.class); userService.saveUser(); }}测试结果:结果解释可以看到 service 中的代码执行,并且通过 dao 的示例调用的方法也执行了,那么说明 @Autowired 注解实现了属性 userDao 的注入。当然这种操作是小儿科,没有一个同学觉得他有什么。 我们验证下它的特点:set 方法我们是省略了,那么它是否按照类型注入的呢?如果我们的实现类中有多个 userDao 接口的实现类呢,又该如何呢?4. 添加 UserDaoImpl2 一样实现 userDao 的接口,代码如下:@Repositorypublic class UserDaoImpl1 implements UserDao { public void saveUser() { System.out.println("执行dao1的保存方法"); }}测试结果结果解释:可以看到上面控制台打印的异常堆栈信息,清楚的提示错误原因,没有指定的 bean 实例 UserDao 类型的,期待单个 bean 匹配,但是找到了两个。一个是 userDaoImpl 一个是 userDaoImpl1。看到这可以证明: @Autowired 注解是按照类型注入,如果匹配的类型多了就会报错。疑问导出:难道使用了 Spring 框架以后,我们的接口只能有一个实现类吗? 当然不可能,毕竟我们看 Spring 的源码的时候 已经看到了,很多的接口对应一大堆的实现类。那么,针对这种多个接口实例的情况,怎么解决的呢?继续我们注解的学习。
- 2.2 注解作用阐述 1.@Bean 注解的解释:见名知意,此注解作用于方法上,表示方法返回的实例初始化到由 Spring 管理的容器中。其实对现在的我们而言,非常好理解。因为我们知道 Spring 的 IoC 其实就是控制反转,实例化 bean 实例,管理 bean 实例。相当于使用 xml 文件方式的 <bean> 标签,一般来说,此注解出现在被 @Configuration 注释的类中。那么…@Configuration 注解的作用又是什么呢?2.@Configuration 注解的解释:其实看此注解的名称,也能大致猜到它的作用。没错,它的作用就是配置,也就是相当于我们之前编写过很多次的 Spring 配置文件 ——Applicationcontext.xml。之前写过的案例中,Spring 容器的初始化必须加载这个配置文件,而在配置文件中,就包含了很多的 标签,大家没忘记吧?不要提了… 不要关了电脑就忘记之前写过的代码。那么我们上面说 @Bean 标签,一般出现在被此注解注释的类中,就是这个原因。3.@ComponentScan 注解的解释:根据上面两个注解的推断,我们能猜出它的作用就是组件扫描。相当于之前我们在 Spring 的配置文件中用过的标签 context:component-scan,现在讲述使用 JavaConfig 是基于注解的方式,当然也避免不了组件的扫描。此注解也是配置类的组成部分。搭建项目最基本的三个注解给大家介绍过了,下面我们就进入正题。
- 4.2 注入 OutputStream 在控制器的方法中注入 OutputStream 对象,只需要在方法中添加参数声明。如下实例:可使用 OutputStream 对象读取指定文件中的内容后直接响应给浏览器。@RequestMapping(value = "/testApi05")public void hello(OutputStream outputStream) throws IOException { Resource res = new ClassPathResource("/test.txt"); FileCopyUtils.copy(res.getInputStream(), outputStream);}test.txt 文件的内容是”this is a test’。文件直接放在项目的 src/main/java 目录下。在浏览器中输入请求路径 http://localhost:8888/sm-demo/testApi05 。你将在浏览器中看到:有句话叫做 “条条道路通罗马”,用在 Spring MVC 中真的是合适,依靠 Spring 强大的注入功能,只要原生开发中能有的对象基本上都能注入进去。
spring注解注入原理相关搜索
-
s line
safari浏览器
samba
SAMP
samplerate
sandbox
sanitize
saper
sas
sass
save
smarty模板
smil
smtp
snapshot
snd
snmptrap
soap
soapclient
soap协议