前言

本文是基于江南一点雨的 Spring Boot+Vue 系列视频教程第 三 章的第三节,详情参考Spring Boot+Vue系列视频教程

在观看学习这一节时,发现当进行手动渲染 Thymeleaf 模板时,通过 @Autowired 注解来对 TemplateEngine 进行自动装配时,发现 idea 对其显示 No beans of 'TemplateEngine ' type of found。

idea中显示如下:

但是当我运行后,没有报错,成功的运行了。于是勾引了我的好奇心。猜测是springboot启动时,容器中才有Bean,没启动前,容器中没有。

验证猜测

于是为了验证猜测是否正确,开启了漫长的寻找之路。虽然过程不及十万八千里,但也差不多。没办法本人菜鸡一个。

1、首先,自己想的是能不能通过 idea 的 debug 来查看。最后发现自己不能做到,无从下手,感觉很烦。

2、于是开启了面向百度编程,查找看看有没有捷径:即通过某种方法/技术来实现,例如监听器。嘿嘿,你猜怎么着,还真有。那就是通过 CommandLineRunner 接口

首先看 CommandLineRunner 是什么?

它是springboot提供的为了解决这样的需求,什么样的需求呢?就是在springboot启动时加载一些数据或预先完成某些动作

且Spring Boot应用程序在启动后,会遍历CommandLineRunner接口的实例。

所以接下来上代码:

代码如下:

@SpringBootApplication
public class ThymeleafApplication {
@Autowired
TemplateEngine templateEngine; public static void main(String[] args) {
SpringApplication.run(ThymeleafApplication.class, args);
} @Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx){
return args -> {
System.out.println("springboot启动前.....");
String[] names = ctx.getBeanDefinitionNames();
for (String name : names) {
if(name.contains("templateEngine")) System.out.println(name);
else continue;
}
};
}
}

结果如下:



最后即验证了猜测。

关于在 springboot 中使用 @Autowired 注解来对 TemplateEngine 进行自动装配时,无法注入的问题。的更多相关文章

  1. springboot中的常用注解

    springboot中的常用注解个人觉得springboor中常用的注解主要可以分为三种:放入容器型注解.从容器中取出型注解和功能型注解.其中的放入容器型和从容器中取出型就是我们平时所说的控制反转和依 ...

  2. springboot中的controller注解没有生效

    springboot中的controller注解没有生效  , 启动的Application类没有在controller的父目录或同级目录

  3. 【归纳】springboot中的IOC注解:注册bean和使用bean

    目前了解的springboot中IOC注解主要分为两类: 1. 注册bean:@Component和@Repository.@Service.@Controller .@Configuration 共 ...

  4. SpringBoot 中定时执行注解(@Scheduled、@EnableScheduling)

    项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息.Spring为我们提供了异步执行任务调度的方式,提供TaskExecutor .TaskScheduler 接口. ...

  5. spring与springboot中,如何在static方法里使用自动注入的属性

    第一步:写注解@Component 使当前类成为一个bean对象.(@Controller,@service都行) 第二步:写个static的变量 第三步:写个@PostConstruct注解注解注释 ...

  6. springboot中使用自定义注解实现策略模式,去除工厂模式的switch或ifelse,实现新增策略代码零修改

    前言 思路与模拟业务 源码地址 https://gitee.com/houzheng1216/springboot 整体思路就是通过注解在策略类上指定约定好的type,项目启动之后将所有有注解的typ ...

  7. springboot中添加事务注解

    1.首先在service层中的方法前添加@Transactional @Service public class UserService { @Autowired private UserMapper ...

  8. Spring中的Autowired注解和Resource注解的区别

    1.所属jar包不同,Autowired是Spring中的Resource是JSR-250规范定义的注解

  9. Spring-boot中使用@ConditionalOnExpression注解,在特定情况下初始化bean

    想要实现的功能: 我想在配置文件中设置一个开关,enabled,在开关为true的时候才实例化bean,进行相关业务逻辑的操作. 具体实现: 1:要实例化的bean 2. 配置类 代码: 想要实例化的 ...

  10. 在servlet中使用@Autowired注解无法注入实例的问题

    今天在项目中碰到了一个奇怪的问题,原来的servlet中使用了HttpsWxService httpsWxService = new HttpsWxService()这一句代码,然后再HttpsWxS ...

随机推荐

  1. C/C++ 顺序表的初始化、添加、插入、删除(删除顺序表中指定的所有元素)

    #include <iostream> #include <stdlib.h> #define MAX_SIZE 100 using namespace std; typede ...

  2. JSP环境搭建及入门 和 虚拟路径和虚拟主机

    Jsp:是一个动态网页,而不是静态网页 html,css,js,Jquery:是静态网页 动态网页是随着,时间,地点,用户操作,而改变 静态不需要jsp 动态是需要的 BS 可以通过浏览器直接访问浏览 ...

  3. js 字符串和16进制的互相转换(转)

    字符串转16进制 function strToHexCharCode(str) { if(str === "") return ""; var hexCharC ...

  4. mitmproxy截取流量和抓包

    mitmproxy介绍https://blog.csdn.net/enemy_sprites/article/details/104052506 mitmproxy处理请求及乱码https://blo ...

  5. vlan概述

    一.vlan是什么? vlan顾名思义就是虚拟局域网Virtual Local Area Network,为什么要划分vlan?划分vlan可以控制广播,增强网络安全性,简化网络管理. 二.vlan的 ...

  6. [极客大挑战 2019]Upload 1

    进入可以看到,这时一道文件上传题目 直接上传test.php 提示Not image不是图片,可能是MIME绕过,尝试抓包修改Content-Type 提示Not php,猜测可能是检测后缀名不能是p ...

  7. Double-Checked Locking 双重检查锁问题

    Code Correctness: Double-Checked Locking Abstract Double-checked locking 是一种不正确的用法,并不能达到预期目标. Explan ...

  8. 组合构造和对应的OGF/EGF Dictionary 备查

    目录 Constructions Cycle Multiset construction Powerset construction Admissible unlabelled constructio ...

  9. Django笔记一之运行系统、创建视图并访问

    从这一篇笔记开始将根据 Django 的官方文档,阅读整理之后,出一系列笔记教程,用作新手入门教程或者自己做查阅. 此次 Django 的版本为 3.2,且之后的一系列笔记都将以这个版本为基础,做功能 ...

  10. SpringBoot工程入门case

    SpringBoot的设计目的是用来简化Spring应用的初始搭建以及开发过程. SpringBoot入门案例: 1.创建一个新module 2.除pom和src文件剩余都删除. 3.在src.com ...