- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- Spring5學(xué)習之基礎知識總結
1、Spring 是輕量級的開(kāi)源的 JavaEE 框架
2、 Spring 可以解決企業(yè)應用開(kāi)發(fā)的復雜性
3、Spring 有兩個(gè)核心部分:IOC 和 Aop
IOC:控制反轉,把創(chuàng )建對象過(guò)程交給 Spring 進(jìn)行管理Aop:面向切面,不修改源代碼進(jìn)行功能增強
4、Spring 特點(diǎn)
方便解耦,簡(jiǎn)化開(kāi)發(fā)Aop 編程支持方便程序測試方便和其他框架進(jìn)行整合方便進(jìn)行事務(wù)操作降低 API 開(kāi)發(fā)難度
1.jar包引入
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.zj.springDemo</groupId> <artifactId>springDemo</artifactId> <version>0.0.1-SNAPSHOT</version> <description>spring的入門(mén)demo</description> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.3.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.6</version> </dependency> </dependencies> </project>
2.bean
package cn.zj.demo.bean; public class User { public void add() { System.out.println("add...."); } }
3.spring的xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--1 配置User對象創(chuàng )建--> <bean id="user" class="cn.zj.demo.bean.User"></bean> </beans>
4.測試代碼
package cn.zj.demo.test; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.zj.demo.bean.User; public class SpringTest { @Test public void testAdd() { // 1 加載 spring 配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); // 2 獲取配置創(chuàng )建的對象 User user = context.getBean("user", User.class); System.out.println(user); user.add(); } }
5.輸出
cn.zj.demo.bean.User@24111ef1 add....
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); public ClassPathXmlApplicationContext( String[] configLocations, boolean refresh, @Nullable ApplicationContext parent) throws BeansException { super(parent); setConfigLocations(configLocations); if (refresh) { refresh(); } }
public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { StartupStep contextRefresh = this.applicationStartup.start("spring.context.refresh"); //容器刷新前的準備,設置上下文狀態(tài),獲取屬性,驗證必要的屬性等 prepareRefresh(); //獲取新的beanFactory,銷(xiāo)毀原有beanFactory、為每個(gè)bean生成BeanDefinition等 ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); // Prepare the bean factory for use in this context. prepareBeanFactory(beanFactory); try { //配置標準的beanFactory,設置ClassLoader,設置SpEL表達式解析器,添加忽略注入的接口,添加bean,添加bean后置處理器等 postProcessBeanFactory(beanFactory); // 實(shí)例化并調用所有注冊的beanFactory后置處理器(實(shí)現接口BeanFactoryPostProcessor的bean,在beanFactory標準初始化之后執行)。 StartupStep beanPostProcess = this.applicationStartup.start("spring.context.beans.post-process"); // Invoke factory processors registered as beans in the context. invokeBeanFactoryPostProcessors(beanFactory); //實(shí)例化和注冊beanFactory中擴展了BeanPostProcessor的bean。 registerBeanPostProcessors(beanFactory); beanPostProcess.end(); //初始化國際化工具類(lèi)MessageSource initMessageSource(); //初始化事件廣播器 initApplicationEventMulticaster(); //模板方法,在容器刷新的時(shí)候可以自定義邏輯,不同的Spring容器做不同的事情。 onRefresh(); //注冊監聽(tīng)器,廣播early application events registerListeners(); //實(shí)例化所有剩余的(非懶加載)單例 //實(shí)例化的過(guò)程各種BeanPostProcessor開(kāi)始起作用。 finishBeanFactoryInitialization(beanFactory); //refresh做完之后需要做的其他事情。 //清除上下文資源緩存(如掃描中的ASM元數據) //初始化上下文的生命周期處理器,并刷新(找出Spring容器中實(shí)現了Lifecycle接口的bean并執行start()方法)。 //發(fā)布ContextRefreshedEvent事件告知對應的ApplicationListener進(jìn)行響應的操作 finishRefresh(); } catch (BeansException ex) { if (logger.isWarnEnabled()) { logger.warn("Exception encountered during context initialization - " + "cancelling refresh attempt: " + ex); } // Destroy already created singletons to avoid dangling resources. destroyBeans(); // Reset 'active' flag. cancelRefresh(ex); // Propagate exception to caller. throw ex; } finally { // Reset common introspection caches in Spring's core, since we // might not ever need metadata for singleton beans anymore... resetCommonCaches(); contextRefresh.end(); } } }
三級緩存
到此這篇關(guān)于Spring5學(xué)習之基礎知識總結的文章就介紹到這了,更多相關(guān)Spring5知識總結內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系站長(cháng)郵箱:ts@56dr.com進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2