![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 65
大局观的小老虎
记录工作中的点点滴滴
展开
-
彻底弄懂@Controller 、@Service、@Component
今天主要聊聊@Controller 、@Service和@Component这三个注解的关系和区别。网上很多人对这三个注解进行了详细的解释,但是仅仅局限于理论,个人对于没有经过自己验证的结果总是持怀疑态度,所有花时间研究了一下,也对这三个注解理解的更加透彻。(ps:网上好多回答不一定正确,所以只能自己花时间验证)附上三个注解的源代码:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Indexed原创 2022-01-08 00:43:54 · 5781 阅读 · 1 评论 -
JVM初始化阶段简述
1<clinit>()方法JVM初始化阶段就是执行类变量构造器方法<clinit>()的过程,对准备阶段产生的默认零值进行赋值。此方法无需定义,是由javac编译器自动收集类中的所有类变量的赋值动作和静态代码块,并将其进行合并。只有被static修饰并且赋值的静态属性才会产生<clinit>()方法,不管是直接赋值还是在静态块中赋值,最后都会被合并成一个<clinit>()方法,并按照代码中的顺序依次赋值。publ...原创 2022-01-06 23:31:10 · 561 阅读 · 0 评论 -
Initializer的三种定义方式
在SpringBoot中采用了大量的Initializer和Listener,本文主要讲解Initializer的三种定义方式。方式一:通过扫描配置文件application.yml进行注入自定义初始化类MyInitializer,该类实现了接口ApplicationContextInitializer,同时在项目的配置文件中定义该类的全路径。当项目启动时,会扫描该配置文件完成类的初始化并进行调用。public class MyInitializer imple...原创 2022-01-06 23:26:38 · 875 阅读 · 0 评论 -
new String()会创建几个对象
问题一:new String("ab")会创建几个对象?会创建2个对象:对象1:new关键字在堆空间中创建的String。 对象2:字符串常量池中的对象“ab”。public void test1(){ String str = new String("ab");}字节码如下: 0 new #2 <java/lang/String> // 创建String(对象1) 3 dup // 复制引用地址 4 ldc #3 <...原创 2022-01-06 23:22:50 · 2403 阅读 · 0 评论 -
@PostConstruct注解详解
初始化方式一:@PostConstruct注解假设类UserController有个成员变量UserService被@Autowired修饰,那么UserService的注入是在UserController的构造方法之后执行的。如果想在UserController对象生成时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入的对象,那么就无法在构造函数中实现(ps:spring启动时初始化异常),例如:public class UserController...原创 2022-01-06 23:20:24 · 43346 阅读 · 3 评论 -
@Autowired与@Resource区别
每当问到@Autowired和@Resource有什么区别时,我们总会不假思索的答到:@Autowired是按照类型注入,@Resource是按照名称注入。这种说法不能说错,只能说答的不全面,那要如何使自己的回答让人眼前一亮呢,且听我慢慢道来。@Autowired@Autowired默认按照类型byType注入,如果按照类型注入时,匹配到多个结果,就会按照名称byName注入(ps:所以@Autowired也可以按照名称注入哟)。当@Autowired通过byName进行注入时,会获取属性的na原创 2022-01-06 23:18:05 · 353 阅读 · 0 评论