Spring 5 학습 의 기초 지식 총화

1.개술
1.Spring 은 경량급 의 오픈 소스 자바 EE 프레임 워 크 입 니 다.
2.Spring 은 기업 응용 개발 의 복잡성 을 해결 할 수 있다.
3.Spring 은 두 가지 핵심 부분 이 있 는데 그것 이 바로 IOC 와 Aop 이다.
IOC:반전 을 제어 하고 생 성 대상 과정 을 Spring 에 맡 겨 관리 Aop:절단면 을 대상 으로 소스 코드 를 수정 하지 않 고 기능 강화
4.봄의 특징
디 결합 을 편리 하 게 하고 개발 Aop 프로 그래 밍 지원 을 간소화 하 며 프로그램 테스트 가 편리 하고 다른 프레임 워 크 와 통합 하여 트 랜 잭 션 작업 을 편리 하 게 하여 API 개발 의 난이 도 를 낮 춥 니 다.
2.입문 데모
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   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    -->
    <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          
        User user = context.getBean("user", User.class);
        System.out.println(user);
        user.add();
    }
}
5.출력

cn.zj.demo.bean.User@24111ef1
add....
3.소스 코드

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");

             //        ,       ,    ,        
            prepareRefresh();

            //    beanFactory,    beanFactory、   bean  BeanDefinition 
            ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

            // Prepare the bean factory for use in this context.
            prepareBeanFactory(beanFactory);

            try {
                  //     beanFactory,  ClassLoader,  SpEL      ,         ,  bean,  bean      
                postProcessBeanFactory(beanFactory);

                //            beanFactory     (    BeanFactoryPostProcessor bean, beanFactory         )。
                StartupStep beanPostProcess = this.applicationStartup.start("spring.context.beans.post-process");
                // Invoke factory processors registered as beans in the context.
                invokeBeanFactoryPostProcessors(beanFactory);

                //      beanFactory    BeanPostProcessor bean。
                registerBeanPostProcessors(beanFactory);
                beanPostProcess.end();

                 //         MessageSource
                initMessageSource();

                 //        
                initApplicationEventMulticaster();

                 //    ,               ,   Spring        。
                onRefresh();

                  //     ,  early application events
                registerListeners();

                 //        (    )  
                //        BeanPostProcessor     。
                finishBeanFactoryInitialization(beanFactory);

              //refresh            。
                //         (     ASM   )
                //              ,   (  Spring      Lifecycle   bean   start()  )。
                //  ContextRefreshedEvent       ApplicationListener       

                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();
            }
        }
    }
image
3 레벨 캐 시
image
스프링 5 학습 의 기초 지식 총화 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.스프링 5 지식 총화 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기