Spring注解分析
1.@value
普通字符串
//直接把当前字符串赋值给当前字段@value(“xxx”)复制代码
占位符
//先进行占位符的替换,然后将替换的字符串赋值给当前字段//根据操作系统环境变量、jvm环境变量、yml文件等作为替换来源@value("$xxx")复制代码
SpringEL
Spring 表达式语言 (SpEL)
//先解析Spring表达式,将结果赋值给当前字段//注意:解析表达式得到的有可能是字符串,也有可能是一个bean对象@value("#{xxx}")复制代码
基于@value的扩展
2.@bean
Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。@Bean明确地指示了一种方法,什么方法呢?产生一个bean的方法,并且交给Spring容器管理;从这我们就明白了为啥@Bean是放在方法的注释上了,因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,剩下的你就别管了。记住,@Bean就放在方法上,就是让方法去产生一个Bean,然后交给Spring容器。@Component , @Repository , @ Controller , @Service 这些注解只局限于自己编写的类,而@Bean注解能把第三方库中的类实例加入IOC容器中并交给spring管理。@Bean注解的另一个好处就是能够动态获取一个Bean对象,能够根据环境不同得到不同的Bean对象。
@Bean是否要跟@Configuration配合使用
结论:@Bean + @Component,虽然@Bean注解的方法返回的实例已经注入到SpringIOC容器中,但是每次调用@Bean注解的方法时,都会创建新的对象实例bean返回,并不会从IOC容器中获取。
因此,要实现在@Bean注解方法时,要求从IOC容器中返回实例bean而不是每次都新创建一个对象,则@Bean要跟@Configuration配合使用复制代码
<