首页 > 其他分享 >SpringBoot的@Autowired和@Resource使用

SpringBoot的@Autowired和@Resource使用

时间:2023-05-17 14:14:15浏览次数:48  
标签:Resource SpringBoot Autowired SpringTemplateEngine templateEngine myTemplateEngi

1、区别

见:https://blog.csdn.net/xhbzl/article/details/126765893

2、使用

2.1、注入配置类

  • 比如注入config的bean
@Configuration
public class MyThymeLeafConfig {

    @Resource
    private ApplicationContext applicationContext;

    /** 自定义的bean
     */
    @Bean(name = "myTemplateEngine")
    public SpringTemplateEngine myTemplateEngine(){
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        SpringResourceTemplateResolver templateResolver = myTemplateResolver();
        templateEngine.setTemplateResolver(templateResolver);
        templateEngine.setEnableSpringELCompiler(true);
        return templateEngine;
    }
  • 使用:@Autowired
    @Autowired
    @Qualifier("myTemplateEngine")
    private SpringTemplateEngine springTemplateEngine2Xml;
  • 使用:@Resource
    @Resource(name = "myTemplateEngine")
    private SpringTemplateEngine springTemplateEngine1Html;

上面两种使用方法是等价的。

2.2、注入业务类、实现类

  • 略……
  • 当只有一个Impl实类的时候,随便用哪个都差不多,>=2的时候,最好用@Resource,比@Autowired + @Qualifier()效率高

3、推荐使用@Resource

  • @Autowired
效率低下,先按类型查找,再按名字查找
  • @Resource
会先按byName去找,如果没找到则会byType去找。如果设置了name属性,则只会按byName去找,找不到就报错。速度快

按名字查找,后面要跟参数name,好处:当有多个Impl实现类时,可以通name快速找到
  • 总结
当只有一个Impl实类的时候,随便用哪个都差不多,>=2的时候,最好用@Resource,比@Autowired + @Qualifier()效率高

标签:Resource,SpringBoot,Autowired,SpringTemplateEngine,templateEngine,myTemplateEngi
From: https://www.cnblogs.com/kakarotto-chen/p/17408564.html

相关文章

  • springboot中使用application.properties配置mysql和sqlserver
    1.使用依赖*mysql:<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>*sqlserver:<dependency><groupId>com.microsoft.sqlserver</groupId><art......
  • SpringBoot学习笔记--系列文章
    随笔分类 -  SpringBootSpringBoot学习笔记(八)——JWT、(Vue3、Axios、Vue-Router、TypeScript实现授权与验证示例)SpringBoot学习笔记(七)——综合示例BookStore图书管理系统SpringBoot学习笔记(六)——分页、跨域、上传、定制banner、Lombok、HutoolSpringBoot学习......
  • SpringBoot拦截器
    在项目的开发中,在某些情况下,我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect。 上面的图是Spring中拦截机制,请求从Filter-->>Controller的过程中,只要在指定的环节出现异常,可以通过对应的机制进行处理。反之在任何一个环节......
  • SpringBoot(10.1) -- AOP
    SpringBoot的AOP的2种实现方式基于SpringBoot的AOP写法spring.aop.auto=true#是否启用aopspring.aop.proxy-target-class=false#false(默认)代理方式有接口使用jdk动态代理,true强制使用cglib代理。基于SpringBoot做法@EnableAopProxyClassexposeProxy属性表示如......
  • SpringBoot使用EasyExcel将Excel数据直接转换为类对象
    背景相比于读取excel到List<List<String>>对象中,抽象一个方法将excel数据直接一步读取到指定的类对象中,更为方便。代码通过类Class读取excel数据到对象/***使用Class来读取Excel**@paraminputStreamExcel的输入流*@paramexcelTypeEnumExcel的格式(XLS或XLSX......
  • SpringBoot整合knife4j
    ●knife4j是一个集Swagger2和PoenApi为一体的增强解决方案导入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency>编写相关配置类......
  • SpringBoot添加JSP支持
    ①创建一个新的MavenWeb项目,命名为SpringBoot_jsptest建成之后会如上图所示,报错是因为没有加入jsp的支持。②按照Maven规范,在src/main/下新建一个名为resource的文件夹,并在下面新建static以及templates文件夹修改pom.xml文件:      1、在url标签后面加入parent元素: <!--......
  • SpringBoot实现注册时头像上传与下载
    一、说明     1.为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。      2.SpringMVC为文件上传提供了直接的支持,这种支持是通过MultipartResolver实现的,SpringMVC使用ApacheCommonsFileUpload技术实现了MultipartResolver实现......
  • SpringBoot中使用Thymeleaf常用功能(一):表达式访问数据
    环境搭建:  创建一个Maven项目,按照Maven项目的规范,在src/main/下新建一个名为resources的文件夹,并在下面新建static和templates文件夹。 ① 修改pom.xml:<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi......
  • SpringBoot入门案例后的4个问题
    1.我们的工程在引入`spring-boot-starter-web`依赖的时候,为什么没有指定版本版本锁定 我们的项目继承了spring-boot-starter-parent父工程,它内部的父工程spring-boot-dependencies已经锁定了部分依赖的版本号,因此自己创建工程中无需再指定版本。2.`spring-......