中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

杭州建設(shè)網(wǎng) 執(zhí)法人員名單seo營(yíng)銷名詞解釋

杭州建設(shè)網(wǎng) 執(zhí)法人員名單,seo營(yíng)銷名詞解釋,做新聞網(wǎng)站編輯需要什么,桂林北站圖片Spring底層核心組件 BeanDefinition BeanDefinition表示Bean定義,有很多屬性用來(lái)描述Bean的特點(diǎn): class,表示Bean類型 scope,表示Bean作用域,單例或原型等 lazyInit:表示Bean是否是懶加載 initMethod…

Spring底層核心組件

BeanDefinition

BeanDefinition表示Bean定義,有很多屬性用來(lái)描述Bean的特點(diǎn):

  • class,表示Bean類型

  • scope,表示Bean作用域,單例或原型等

  • lazyInit:表示Bean是否是懶加載

  • initMethodName:表示Bean初始化時(shí)要執(zhí)行的方法

  • destroyMethodName:表示Bean銷毀時(shí)要執(zhí)行的方法

  • 還有很多...

定義Bean的方式主要分為兩種:

  • 申明式定義

    1、<bean/>
    2、@Bean
    3、@Component(@Service,@Controller)
  • 編程式定義

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);// 生成一個(gè)BeanDefinition對(duì)象,并設(shè)置beanClass為User.class,并注冊(cè)到ApplicationContext中
    AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
    beanDefinition.setBeanClass(User.class);
    beanDefinition.setScope("prototype"); // 設(shè)置作用域
    beanDefinition.setInitMethodName("init"); // 設(shè)置初始化方法
    beanDefinition.setLazyInit(true); // 設(shè)置懶加載context.registerBeanDefinition("user", beanDefinition);
    System.out.println(context.getBean("user"));

BeanDefinitionReader

BeanDefinition讀取器,雖然開(kāi)發(fā)中用的很少,但是源碼中用得很多

AnnotatedBeanDefinitionReader

把某個(gè)類轉(zhuǎn)換為BeanDefinition,并且解析類上的注解

AnnotationConfigApplicationContext context = new
AnnotationConfigApplicationContext(AppConfig.class);
AnnotatedBeanDefinitionReader annotatedBeanDefinitionReader = new AnnotatedBeanDefinitionReader(context);
// 將User.class解析為BeanDefinition
annotatedBeanDefinitionReader.register(User.class);
System.out.println(context.getBean("user"));

可以解析的注解:@Conditional、@Scope、@Lazy、@Primary、@DependsOn、 @Role、@Description

XmlBeanDefinitionReader

解析<bean/>標(biāo)簽

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(context);
int i = xmlBeanDefinitionReader.loadBeanDefinitions("spring.xml");
System.out.println(context.getBean("user"));

ClassPathBeanDefinitionScanner

掃描器,可以進(jìn)行掃描,掃描某個(gè)包路徑,對(duì)掃描到的類進(jìn)行解析

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.refresh();
ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
scanner.scan("com.gax");
System.out.println(context.getBean("userService"));

BeanFactory

Bean工廠,負(fù)責(zé)創(chuàng)建Bean,并且提供獲取Bean的 API

ApplicationContext就是BeanFactory的一種

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory,
HierarchicalBeanFactory,
MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
...
}HierarchicalBeanFactory: 支持父子Bean工廠,子Bean工廠獲取不到時(shí),可以到父Bean工廠去獲取
ListableBeanFactory: 展示Bean的名字、展示Bean的數(shù)量、統(tǒng)計(jì)的信息、拿某一個(gè)類型的Bean,類似列表的功能
EnvironmentCapable: 獲取環(huán)境變量的功能
ApplicationEventPublisher: 事件發(fā)布的功能
MessageSource: 國(guó)際化的功能
ResourcePatternResolver: 獲取某些資源、解析某些資源的功能

Spring源碼中,BeanFactory接口非常重要的實(shí)現(xiàn)類: DefaultListableBeanFactory

ApplicationContext.getBean() 調(diào)用的就是 DefaultListableBeanFactory 的getBean()方法

DefaultListableBeanFactory 可以單獨(dú)使用:

DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
beanDefinition.setBeanClass(User.class);
beanFactory.registerBeanDefinition("user", beanDefinition);
System.out.println(beanFactory.getBean("user"));

ApplicationContext

ApplicationContext是個(gè)接口,實(shí)際上也是一個(gè)BeanFactory,不過(guò)比BeanFactory 更加強(qiáng)大:

1、HierarchicalBeanFactory:擁有獲取父BeanFactory的功能

2、ListableBeanFactory:擁有獲取beanNames的功能

3、ResourcePatternResolver:資源加載器,可以一次性獲取多個(gè)資源(文件資源等等)

4、EnvironmentCapable:可以獲取運(yùn)行時(shí)環(huán)境(沒(méi)有設(shè)置運(yùn)行時(shí)環(huán)境功能)

5、ApplicationEventPublisher:擁有廣播事件的功能(沒(méi)有添加事件監(jiān)聽(tīng)器的功能)

6、MessageSource:擁有國(guó)際化功能

ApplicationContext兩個(gè)重要的實(shí)現(xiàn)類:

1、AnnotationConfigApplicationContext

2、ClassPathXmlApplicationContext

國(guó)際化

定義一個(gè)MessageSource

@Bean
public MessageSource messageSource() {ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();messageSource.setBasename("messages");return messageSource;
}

ApplicationContext擁有國(guó)際化的功能,可以直接用

context.getMessage("test", null, new Locale("en_CN"))

資源加載

可以利用ApplicationContext獲取某個(gè)文件的內(nèi)容

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);Resource resource = context.getResource("file://D:\\UserService.java");
System.out.println(resource.contentLength());
System.out.println(resource.getFilename());Resource resource1 = context.getResource("https://www.baidu.com");
System.out.println(resource1.contentLength());
System.out.println(resource1.getURL());Resource resource2 = context.getResource("classpath:spring.xml");
System.out.println(resource2.contentLength());
System.out.println(resource2.getURL());Resource[] resources = context.getResources("classpath:com/gax/*.class");
for (Resource resource : resources) {System.out.println(resource.contentLength());System.out.println(resource.getFilename());
}

獲取運(yùn)行時(shí)環(huán)境

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);Map<String, Object> systemEnvironment = context.getEnvironment().getSystemEnvironment();
System.out.println(systemEnvironment); //操作系統(tǒng)層面的環(huán)境變量Map<String, Object> systemProperties = context.getEnvironment().getSystemProperties();
System.out.println(systemProperties); //運(yùn)行java通過(guò)-D指定的環(huán)境變量MutablePropertySources propertySources = context.getEnvironment().getPropertySources();
System.out.println(propertySources); //最強(qiáng)大的,包含上面兩種和PropertySources注解的變量System.out.println(context.getEnvironment().getProperty("NO_PROXY")); //操作系統(tǒng)
System.out.println(context.getEnvironment().getProperty("sun.jnu.encoding")); //jvm -D指定
System.out.println(context.getEnvironment().getProperty("gax")); //property里面的

事件發(fā)布

定義一個(gè)事件監(jiān)聽(tīng)器

@Bean
public ApplicationListener applicationListener() {return new ApplicationListener() {@Overridepublic void onApplicationEvent(ApplicationEvent event) {System.out.println("接收到了一個(gè)事件");}};
}

發(fā)布一個(gè)事件

context.publishEvent("yeah");

http://www.risenshineclean.com/news/41980.html

相關(guān)文章:

  • 國(guó)外網(wǎng)站國(guó)內(nèi)做二維碼企業(yè)網(wǎng)站營(yíng)銷的典型案例
  • 學(xué)生管理系統(tǒng) 靜態(tài)網(wǎng)站源碼如何開(kāi)展網(wǎng)絡(luò)營(yíng)銷活動(dòng)
  • 做分銷的官網(wǎng)網(wǎng)站北京整站線上推廣優(yōu)化
  • 如何做行業(yè)網(wǎng)站寧波網(wǎng)站優(yōu)化
  • 怎么做學(xué)校網(wǎng)站和微信公眾號(hào)域名查詢 ip
  • 東阿網(wǎng)站建設(shè)百度seo流量
  • 我想注冊(cè)公司怎么注冊(cè)網(wǎng)站排名優(yōu)化服務(wù)
  • wordpress拷站發(fā)布外鏈的平臺(tái)有哪些
  • 網(wǎng)站被入侵后需做的檢測(cè)(1)唯尚廣告聯(lián)盟
  • 重慶云陽(yáng)網(wǎng)站建設(shè)公司推薦沈陽(yáng)網(wǎng)站seo公司
  • 建設(shè)廳官方網(wǎng)站企業(yè)庫(kù)網(wǎng)絡(luò)賺錢(qián)推廣
  • 江蘇建設(shè)網(wǎng)站bt磁力兔子引擎
  • 青建集團(tuán)股份有限公司sem推廣優(yōu)化
  • 搭建什么網(wǎng)站好玩唐山百度seo公司
  • wordpress和laravel鄭州seo關(guān)鍵詞
  • 做良心網(wǎng)站seo的優(yōu)化步驟
  • 企業(yè)網(wǎng)站管理seo1視頻發(fā)布會(huì)
  • 怎么樣做國(guó)際網(wǎng)站生意seo知識(shí)培訓(xùn)
  • 鄭州旅游網(wǎng)站設(shè)計(jì)小學(xué)生一分鐘新聞播報(bào)
  • 企業(yè)管理培訓(xùn)課程課件南寧seo外包服務(wù)
  • 網(wǎng)站開(kāi)發(fā)到發(fā)布佛山優(yōu)化推廣
  • 微信做模板下載網(wǎng)站有哪些企業(yè)網(wǎng)站制作流程
  • 效果圖網(wǎng)站模板南寧網(wǎng)站seo外包
  • 集美網(wǎng)站開(kāi)發(fā)重慶企業(yè)免費(fèi)建站
  • 網(wǎng)站建設(shè)公司做銷售好不好哪個(gè)公司的網(wǎng)站制作
  • 洛陽(yáng)網(wǎng)站建設(shè)好做不怎么安裝百度
  • 安徽省做網(wǎng)站武漢百度推廣代運(yùn)營(yíng)
  • 如何給自己的公司網(wǎng)站做優(yōu)化百度關(guān)鍵詞怎么做排名
  • 做百度移動(dòng)網(wǎng)站優(yōu)網(wǎng)站日常維護(hù)有哪些
  • 怎么區(qū)分模板網(wǎng)站和定制網(wǎng)站網(wǎng)絡(luò)推廣都有什么方式