当前位置: 首页 > news >正文

推荐设计网站wordpress模版侵权

推荐设计网站,wordpress模版侵权,平台推广是做什么的,网站配色技巧Configuration注解介绍 Configuration注解,用于标注一个类是一个spring的配置类(同时,也是一个bean),配置类中可以使用ComponentScan、Import、ImportResource 和 Bean等注解的方式定义beanDefinition。 Target(Elem…

@Configuration注解介绍

@Configuration注解,用于标注一个类是一个spring的配置类(同时,也是一个bean),配置类中可以使用@ComponentScan、@Import、@ImportResource 和 @Bean等注解的方式定义beanDefinition。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component // 被@Component注解修饰, 相当于也加上了@Component注解
public @interface Configuration {// 同@Component注解的value,即配置类的beanName@AliasFor(annotation = Component.class)String value() default "";// 是否代理配置类中@Bean修饰的方法boolean proxyBeanMethods() default true;
}

full模式和lite模式

如何确定配置类是full模式或lite模式?

  • 当一个配置类,它使用了@Configuration注解修饰时,并且@Configuration注解的proxyBeanMethods属性为true时,那么会给该配置类的bean定义信息添加值为full的属性(CONFIGURATION_CLASS_ATTRIBUTE)。

  • 当一个配置类,它使用了@Configuration注解修饰时,但是@Configuration注解的proxyBeanMethods属性为false时,那么会给该配置类的bean定义信息添加值为lite的属性(CONFIGURATION_CLASS_ATTRIBUTE)。

  • 当一个配置类,它没有使用@Configuration注解修饰时,但是它在类上使用了@Component或@ComponentScan或@Import或@ImportResource等注解或在类中的某个方法上使用了@Bean注解,那么也会给该配置类的bean定义信息添加值为lite的属性(CONFIGURATION_CLASS_ATTRIBUTE)。

full模式增强

lite模式就相当于是一个“简单版”的配置类,这个配置类中的方法使用@Bean注解怎么定义的bean,就怎么创建,比如使用factoryBean-factoryMethod工厂方法创建。

但是,full模式与此不同,如果一个配置类是full模式(@Configuration默认就是full模式),那么spring在processBeanDefinisitionRegistry配置类的时候,该创建bean定义的时候创建bean定义,这个过程与lite模式一致。但是,在后面postProcessBeanFactory时(因为前面的过程已经收集好了bean定义),如果发现,某个bean定义的CONFIGURATION_CLASS_ATTRIBUTE属性为“full”,那么就会生成这个配置类的代理类,代替我们自己原本定义的配置类,代理类中会使用cglib重写原来的成员方法(具体怎么重写的?按照cglib生成代码的规则),使得原本对我们自己的定义的配置类中的方法调用,变成了调用代理类的方法,而代理类的方法(cglib重写了原方法),又会把调用转而调用到BeanMethodInterceptor#intercept方法,从而完成对原配置类中的@Bean方法的拦截。

full模式增强实例

可能这样说有点抽象,下面看个实例。

@Configuration(proxyBeanMethods = true) // 默认就是true
public class Bm {@Bean // 定义了b1public B1 b1() {B1 b1 = new B1();return b1;}@Bean // 定义b2public B2 b2() {B2 b2 = new B2();  // 因为b2中需要一个b1,所以,我这里直接调用了b1,然后把方法的返回结果,给了b2// 那么问题就来了://     1. 首先,这里其实省略了this,那么this是谁?//             这是很关键的,很明显,谁调用了b2这个方法,谁就是这里的this//	   2. 如果是当前的这个Bm这个对象,调用了b2这个方法,那么this就是b2这个对象//             但是,我们刚刚提到了,如果,spring为我们创建了一个代理类,这个代理类继承自Bm,//             那么这个代理类对象也是可以调用b2这个方法的嘛?通过super关键字就行了//             我们假设就是代理类对象通过super调用的b2方法,那这里调用this.b1(),这里的this就是代理对象吧!//             那调用代理对象的方法,按照前面所说,就会进入到BeanMethodInterceptor#intercept入口方法//             而在这个方法中,就可以从beanFactory中先去寻找是否有b1这个bean,//             如果有,则不用再执行原配置类中的b1方法了,//             如果没有,则执行原配置类中的b1方法,获取到b1这个bean,放入到spring容器//      而spring正是这样做的。B1 b1 = b1();b2.setB1(b1);return b2;}}public class B1 {private B2 b2;public void setB2(B2 b2) {this.b2 = b2;}public B1() {System.out.println("B1 cons...");}
}public class B2 {private B1 b1;public void setB1(B1 b1) {this.b1 = b1;}public B2() {System.out.println("B2 cons...");}}
http://www.yayakq.cn/news/291031/

相关文章:

  • 电子商务网站开发难点青岛网站建设技术托管
  • 九龙坡做网站2023年房地产市场分析
  • 网站开发需要做什么工作湛江网红打卡点
  • 门窗网站源码wordpress按住标题没有显
  • 怎样用电脑ip做网站青海建设兵团网站小院
  • 京东商城网站wordpress模板数据导航 wordpress
  • 高端网站开发 金蝶摄影网站建设流程
  • 腾讯建设网站视频视频尤溪县建设局网站
  • 苏州知名高端网站建设公司龙岩网站制作设计
  • 网站开发合同适用印花税网站建设市场供需分析
  • 沧州地区做网站营销方案设计
  • 辽宁智能建站系统价格电子商务网站与建设课件
  • 网站建设的优势与不足中小企业网络解决方案
  • 网站导航条制作郑州服装网站建设
  • 企业网站推广的名词解释做网站是什么专业什么工作
  • c2c网站 多钱个人网站域名所有权
  • 做网站服务器一年多少钱上海工程造价咨询公司
  • 网站关键词优化难不难数字博物馆网站建设内容
  • .net响应式网站模板wordpress 代码调用
  • 怀化网站制作网站开发流程及详解
  • 网站的转盘游戏怎么做centos7.4安装wordpress
  • 办公网络建设项目商务要求seo收索引擎优化
  • 石河子建设网站建设电动三轮车官方网站
  • 建立网站信息发布登记制度宁波网站建设培训班
  • 凡科建设网站入门版好不万网网站多少
  • 百色网站建设公司句容做网站
  • 旅游网站建设要如何做wordpress主题自动更新
  • 北京公司网站建设怎么做新浪网站
  • 汕头专业建站wordpress 网店主题
  • 站长工具高清无吗站长工具劲爆