国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

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

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

Spring底層核心組件

BeanDefinition

BeanDefinition表示Bean定義,有很多屬性用來描述Bean的特點:

  • class,表示Bean類型

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

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

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

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

  • 還有很多...

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

  • 申明式定義

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

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);// 生成一個BeanDefinition對象,并設(shè)置beanClass為User.class,并注冊到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讀取器,雖然開發(fā)中用的很少,但是源碼中用得很多

AnnotatedBeanDefinitionReader

把某個類轉(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/>標簽

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

ClassPathBeanDefinitionScanner

掃描器,可以進行掃描,掃描某個包路徑,對掃描到的類進行解析

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

BeanFactory

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

ApplicationContext就是BeanFactory的一種

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

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

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

DefaultListableBeanFactory 可以單獨使用:

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是個接口,實際上也是一個BeanFactory,不過比BeanFactory 更加強大:

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

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

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

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

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

6、MessageSource:擁有國際化功能

ApplicationContext兩個重要的實現(xiàn)類:

1、AnnotationConfigApplicationContext

2、ClassPathXmlApplicationContext

國際化

定義一個MessageSource

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

ApplicationContext擁有國際化的功能,可以直接用

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

資源加載

可以利用ApplicationContext獲取某個文件的內(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());
}

獲取運行時環(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); //運行java通過-D指定的環(huán)境變量MutablePropertySources propertySources = context.getEnvironment().getPropertySources();
System.out.println(propertySources); //最強大的,包含上面兩種和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ā)布

定義一個事件監(jiān)聽器

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

發(fā)布一個事件

context.publishEvent("yeah");

http://aloenet.com.cn/news/41980.html

相關(guān)文章:

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