首页 > 编程语言 >Spring编程注意事项

Spring编程注意事项

时间:2023-01-26 21:55:20浏览次数:47  
标签:事务 Spring 编程 代理 Bean 注意事项 方法 属性

Spring编程注意事项

目录

Spring Bean定义

1、Spring默认扫描包(ComponentScan注解)只扫描application所在的包下

而我们可以用显示注解ComponentScans去指定扫描的包,此时默认原来的默认扫描包就被忽略失效了

2、我们定义一个类为 Bean,如果再显式定义了构造器, 那么这个 Bean 在构建时,会自动根据构造器参数定义寻找对应的 Bean(选择参数对应的bean装配),然后反射创建出 这个 Bean。

错例:报找不到对应bean

3、如果定义了多个显示构造器,Spring 无从选择,只能尝试去调用默 认构造器,而这个默认构造器又不存在,就会报错

4、当一个单例的 Bean,使用 autowired 注解标记其属性时,你一定要注意这个属性值会被固定下来。

案例

解决办法

5、注意反射来实例化类

java.lang.Class.newInsance()

java.lang.reflect.Constructor.newInstance()

sun.reflect.ReflectionFactory.newConstructorForSerialization().newInstance()

其中第三种方式不会初始化类属性

Spring Bean依赖注入

1、@Autowired 要求是必须注入的,它先根据类型寻找,如果有多个,这个优先级的决策是先根据 @Primary 来决策,其次是 @Priority 决策,最后是根据 Bean 名字的严格匹配来决策。如果这些帮助决策优先级的注解都没有被使用,名字 也不精确匹配,则返回 null,告知无法决策出哪种最合适

2、显式引用 Bean ,需要注意默认bean的名字:如果一个类名是以两个大写字母开 头的,则首字母不变,其它情况下默认首字母变成小写

3、引用内部类,默认的bean名字为

4、我们一般都会因为 @Value 常用于 String 类型的装配而误 以为 @Value 不能用于非内置对象的装配,实际上这是一个常见的误区

注意要避免和环境变量冲突,也要注意避免和系统变量等其他变量冲突

5、集合类型的自动注入是 Spring 提供的另外一个强大 功能。

Spring Bean生命周期

1、生命周期:对应实例化 Bean,注入 Bean 依赖,以及初始化 Bean

2、使用 @Autowired 直接标记在成 员属性上而引发的装配行为是发生在构造器执行之后的。

报错案例

解决方法

标签:事务,Spring,编程,代理,Bean,注意事项,方法,属性
From: https://www.cnblogs.com/hui7/p/17068285.html

相关文章