Spring 자바 설정 을 통 해 Tomcat 을 통합 하 는 방법
Tomcat
의존
<!-- -->
<dependency>
<groupId>org.apache</groupId>
<artifactId>apache-tomcat-9.0.36-src</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
우선 시작 클래스 가 필요 합 니 다.
public class TomcatRun {
private static final int PORT = 8080;
private static final String CONTEXT_PATH = "/com/yu";
public static void main(String[] args) {
Tomcat tomcat = new Tomcat();
//
tomcat.setPort(PORT);
tomcat.getHost().setAppBase(".");
// Connector , Connector, tomcat Connector
tomcat.getConnector();
tomcat.addWebapp(CONTEXT_PATH, new File("src/main/webapp").getAbsolutePath());
try {
tomcat.start();
} catch (LifecycleException e) {
e.printStackTrace();
}
tomcat.getServer().await();
}
}
지정 한 포트 를 만 들 수도 있 습 니 다.
// connector
// Connector connector = new Connector();
// connector.setPort(PORT);
// tomcat.getService().addConnector(connector);
만 들 기tomcat
설정
public class MyWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{AppConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/*"};
}
@Override
protected Filter[] getServletFilters() {
return new Filter[]{
//
new CharacterEncodingFilter(StandardCharsets.UTF_8.name())
};
}
}
여기 끝 이 야...문제 가 왔 습 니 다
Connector
어떻게 작 동 합 니까Spring
?Servlet 3.0 용기(예 를 들 어 Tomcat)는 classpath*아래
Tomcat
파일 을 스 캔 합 니 다.그 안에 지 정 된Sping
의 실현 을 실현 합 니 다.또한 하나의 주해META-INF/services/javax.servlet.ServletContainerInitializer
는 특정한 종류 에 관심 이 있 음 을 나타 내 고 onStartup 방법 을 호출 할 때ServletContainerInitializer
지 정 된 인터페이스의 실현 류 를 전달 합 니 다.예 를 들 어
HandlesTypes
중의HandlesTypes
실현 류Spring
는ServletContainerInitializer
의SpringServletContainerInitializer
방법,즉 위 에서 정의 한WebApplicationInitializer
부류 의onStartup
를 호출 할 것 이다.여기 서MyWebApplicationInitializer
와onStartup
의 초기 화 를 연이어 완성 할 것 이다.
@HandlesTypes(WebApplicationInitializer.class)
public class SpringServletContainerInitializer implements ServletContainerInitializer {
@Override
public void onStartup(@Nullable Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)
throws ServletException {
List<WebApplicationInitializer> initializers = new LinkedList<>();
if (webAppInitializerClasses != null) {
for (Class<?> waiClass : webAppInitializerClasses) {
// Be defensive: Some servlet containers provide us with invalid classes,
// no matter what @HandlesTypes says...
if (!waiClass.isInterface() && !Modifier.isAbstract(waiClass.getModifiers()) &&
WebApplicationInitializer.class.isAssignableFrom(waiClass)) {
try {
initializers.add((WebApplicationInitializer)
ReflectionUtils.accessibleConstructor(waiClass).newInstance());
}
catch (Throwable ex) {
throw new ServletException("Failed to instantiate WebApplicationInitializer class", ex);
}
}
}
}
if (initializers.isEmpty()) {
servletContext.log("No Spring WebApplicationInitializer types detected on classpath");
return;
}
servletContext.log(initializers.size() + " Spring WebApplicationInitializers detected on classpath");
AnnotationAwareOrderComparator.sort(initializers);
for (WebApplicationInitializer initializer : initializers) {
// WebApplicationInitializer onStartup
initializer.onStartup(servletContext);
}
}
}
Spring 이 자바 설정 을 통 해 Tomcat 을 통합 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring 설정 통합 Tomcat 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.