踏入spring领域近一年时间了,读了一些关于spring的书,负责公司的部分开发任务,这个过程中积累很多读书笔记以及项目开发技巧和问题,老话说得好温故而知新,现在是时候重新整理一下了:
今天开始第一篇:spring旅程:spring之Bean
bean的作用域:
1.spring 装配bean的方式有三种:
1.自动装配
2.java装配
3. 配置
在我们自己使用项目里面的bean的时候,使用自动装配是很好的选择
但是有些时候我们是没有办法使用自动装配的,比如我们需要使用第三方库里面的bean,我们没有办法去第三方库里面给bean添加component注解,这个时候我们就需要手动装配了
2.java装配
java装配需要我们创建一个java配置类,然后给其加上@Configuration注解,此注解表明这是一个配置类,其包含了spring如何创建bean的细节,或者说其负责提供哪些bean实例
3.如何声明一个简单的bean?如下:
@Bean
public MessageClient getMessageClient(){
return new MessageClient();
}
我们编写一个负责创建所需实例的方法然后给这个方法添加@Bean注解,此注解会告诉spring此方法返回的对象需要被spring管理
默认情况下bean的id和此方法的名字是一致的
4.对于构造器注入来说
使用自动装配或者java装配都是优于 的选择
5.对bean进行属性装配的时候可以使用 ,尤其是对list属性进行装配:
如下:
<bean id=\"propertyConfigurer\" class=\"org.spring work.beans.factory.config.PropertyPlaceholderConfigurer\">
<property name=\"fileEncoding\" value=\"utf-8\" />
<property name=\"locations\">
<list>
<value>classpath*:xxl-job-admin.properties</value>
</list>
</property>
</bean>
<property>标签用来装配bean的属性
<list>标签用来对list属性进行装配,例如上面对locations属性装配
如何让自动装配和javaConfig和 配置混合并合并在一起,型号在spring中这些配置方案之间不是互斥的
首先:自动装配的时候spring不会在意bean来自哪里,spring会考虑容器中所有的bean
那么javaConfig呢?其不会自动引用所有spring容器中bean,而是需要进行导入
我们可以使用@Import注解来描述这个配置类需要导入那个配置类中提供的bean,例如:
@Configuration
@Import(MybatisPlusConfig.class)
public class MQConfig {
P62
接下来我们就可以在MQConfig中引用MybatisPlusConfig中的bean了
6.那么如何让JavaConfig和 配置同时起作用呢?
@Configuration
@ImportResource(\"classpath:cd-config. \")
public class MQConfig {
如上使用@ImportResource注解,我们就可以在MQConfig中引用对应 配置文件中的bean了
如上在JavaConfig中我们可以通过@Import和@ImportResource来拆分JavaConfig类
7.那么如何对 配置文件进行拆分呢?
我们可以使用<import>标签进行拆分
<import resoune =\"ad-config. \"/>
上面实现了 中导入其他 配置文件
那么 中如何导入javaConfig呢?
可以使用bean标签导入,如下
<bean class=\"mapper.ScannerConfig\">
Spring表达式:
主要用来动态注入值到SpringBean里面
可以用来获取对象属性,例如LoginController里面UserMyLog注解的使用
@UserMyLog(\"用户注册接口,手机号为:#{#userRegistDTO.phone}\")
public YZLResponse regist(HttpServletRequest request, HttpServletResponse response,@Valid UserRegistDTO userRegistDTO)
上面的注解就使用了Spring表达式来获取方法参数对象的值
继续阅读与本文标签相同的文章
mysql1
-
8 分钟了解 Kubernetes
2026-05-18栏目: 教程
-
Helm 从入门到实践 | 从 0 开始制作一个 Helm Charts
2026-05-18栏目: 教程
-
阿里云突发性能实例t5 和共享型实例xn4 n4的区别
2026-05-18栏目: 教程
-
【DockerCon2017技术解读】Docker特性介绍
2026-05-18栏目: 教程
-
面向海量数据的极致成本优化-云HBase的一体化冷热分离
2026-05-18栏目: 教程
