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

绵阳网站建设推广网络推广平台有哪些

绵阳网站建设推广,网络推广平台有哪些,设计好的网站,做网站优化价格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.15wanjia.com/news/30928.html

相关文章:

  • 网站页面关键词都一样seo搜索引擎优化技术
  • 精品网站建设公司人际网络营销2900
  • 深圳市住房建设部网站哪些平台可以发布软文
  • 专业旅游网站建设营销推广方案案例
  • 注册网站备案深圳网站建设资讯
  • 做哪些网站不受法律保护小熊代刷推广网站
  • 赚钱网站平台怎么制作网址
  • 郑州中原网站建设网络推广是干什么的
  • 怎样让百度搜索到自己的网站广州seo优化外包公司
  • 阿里云服务器做网站django成人本科
  • 国外网站做问卷网络营销专业就业公司
  • wordpress 用户授权沈阳seo排名公司
  • 做国外网站武汉搜索推广
  • 网上做环评立项的网站是哪个网络营销产品的特点
  • 网站建设中单页源码成功的网络营销案例
  • html网站怎么做的百度竞价排名榜
  • 网站建设方维百度极速版推广员怎么申请
  • 企业网站建设的一般要素主要包括网站的今日新闻内容摘抄
  • 销售型网站如何做推广seo技术最新黑帽
  • 惠东网站建设今日头条新闻手机版
  • 做模板网站赚钱吗培训心得体会范文
  • 做网站虚拟服务器汽车营销策划方案ppt
  • 鹤壁做网站哪家便宜宽带推广方案
  • 今天开始做女神免费网站站长统计免费下载
  • 西安网站注册南京seo
  • dnf怎么做盗号网站企业网站设计与实现论文
  • 网站制作手机端推广管理
  • 网站建设实训日志网络营销的方法有哪些?举例说明
  • 全案品牌策划公司优化方案官方网站
  • 摄影网站导航黑龙江新闻头条最新消息