Spring 5 학습 의 기초 지식 총화
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();
}
}
}
3 레벨 캐 시
스프링 5 학습 의 기초 지식 총화 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.스프링 5 지식 총화 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.