代码改变世界

3.springboot-容器机制-@注解

2025-10-16 22:23  tlnshuju  阅读(8)  评论(0)    收藏  举报

Spring传统注解

说明:这些在Spring中的传统注解通过仍然有效,凭借这些注解能够给容器注入组件

@Component

@Controller

@Service

@Repository

SpringBoot自己的注解


@Configuration

通过@Configuration创建配置类来注入组件

1.Spring的传统方式

输出

2.SpringBoot的@Configuration方式

解读
1.@Configuration标识这是一个配置类,等价于配置文件
2.程序员可能通过@Bean注解注入bean对象到容器

3.当一个类被@Configuration标识,该类-BeanConfig也被作为一个Bean会注入容器

通过1) 默认单例,能够用@Scope("prototype")设置成多例

2)注意事项和细节

1.SpringBoot2新增特性:proxyBeanMethods指定Full模式和Lite模式

2.部署类可以有多个,就和Spring可以有多个ioc配置文件是一个道理

@Import

通过@Import来注入组件,给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名

@Import({Dog.class,Cat.class})

@Conditional

条件注解说明

1.条件装配:满足Conditional指定的件,则进行组件注入
2.@Conditional是一个根注解,下面有很多扩展注解

扩展注解的作用:

应用实例

1.要求:演示在SpringBoot,如何通过@ConditionalOnBean来注入组件
2.只有在容器中有name=monster_nmw组件时,才注入dog01,代码如图

添加条件注解。name,只检查名字,对类型不做要求。

修改Bean的参数,使其满足条件name=monster_nmw。

通过这样就能够在容器中获取了

实例2

如果容器中没有name=monster_nmw的Bean,则注入下面的实例。常用于克服循环依赖问题。

@ImportResource

通过作用:原生配置文件引入,也就是许可直接导入Spring传统的beans.xml,能够认为是SpringBoot对Spring容器材料的兼容

参数:locations,别名value,而value可以省略。

配置多个

配置绑定

@ConfigurationProperties

一句话:使用Java读取到SpringBoot核心配置文件application.properties的内容,并且把它封装到JavaBean中

应用实例

1.需求:将application.properties指定的属性值k-v和JavaBean绑定

2.配置
@Component 把Furn注入容器中
@ConfigurationProperties,prefix说明前缀prefix是furn01。使用配置文件的属性值赋值

配置绑定还有第2种方式(了解即可):

1)之前是通过@Component注入Furn的Bean,然后再利用的@ConfigurationProperties。假设把@Component注释掉了,@ConfigurationProperties会检查Furn没有注入,导致报红

2)在设置类应用注解,启用配置属性@EnableConfigurationProperties,参数是Furn.class类型

使得上面的@ConfigurationProperties能够生效,同时注入Furn。感觉不如和@Component的组合好用。

注意事项和细节

1.中文乱码

假如application.properties有中文,需要转成unicode编码写入,否则出现乱码

配置含中文

页面显示乱码

使用工具转码

修改配置即可

2.配置文件错误提示

使用@ConfigurationProperties(prefix="furn01")会提示如下信息,但是不会影响启用

在pom.xml中添加依赖,即可