SpringBoot的两个容器
时间: 2024-05-03 11:09:52 浏览: 15
Spring Boot中有两个容器:Servlet容器和Spring应用程序上下文容器。
Servlet容器是用于处理HTTP请求和响应的容器,它可以处理Servlet、JSP、WebSocket等。Spring Boot默认使用Tomcat作为Servlet容器,但也可以使用Jetty或者Undertow。
Spring应用程序上下文容器是一个IoC容器,它负责管理Bean对象的创建、配置和生命周期。Spring Boot使用Spring Framework中的ApplicationContext作为应用程序上下文容器,它可以管理Spring Bean、AOP、事件、国际化等Spring框架的特性。在Spring Boot应用程序启动时,会自动创建一个ApplicationContext对象,并将所有Spring Bean加载到其中。
相关问题
springboot监听容器启动
在SpringBoot中,可以使用两个监听接口来实现容器启动后的回调方法:CommandLineRunner和ApplicationRunner。这两个接口都需要由程序实现,并且标识@Component注解,使其被IOC容器管理。当SpringBoot启动成功后,这些实现类的回调方法就会被执行。
除了使用监听接口,还可以通过调用AbstractMessageListenerContainer类中的start()方法来启动对消息队列的监听。该方法可以启动消息队列的消费者,使其开始监听并处理消息。这样可以在SpringBoot启动后,确保消息队列的监听器已经启动并可以消费消息。
总结起来,SpringBoot提供了多种方式来实现容器启动后的回调方法,包括监听接口和消息队列监听器的启动方法。可以根据具体的需求选择适合的方式来执行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [SpringBoot的启动监听](https://blog.csdn.net/m0_67392661/article/details/126515303)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [SpringBoot+RabbitMQ_自定义监听容器的启动和停止](https://blog.csdn.net/weixin_40877388/article/details/109514849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
springboot服务配置两个端口
在Spring Boot中配置两个端口可以通过以下步骤完成:
1. 在`application.properties`或`application.yml`配置文件中添加以下属性:
```yaml
server.port=8080
# 添加第二个端口配置
server.additionalPorts=9090
```
2. 创建一个自定义的`EmbeddedServletContainerCustomizer` bean,并在其中进行端口配置。可以在应用的主类上添加`@Configuration`注解,并定义一个bean方法来创建自定义的`EmbeddedServletContainerCustomizer`。
```java
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ServerConfig {
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return container -> {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
// 配置第二个端口
tomcat.addAdditionalTomcatConnectors(createConnector());
}
};
}
private Connector createConnector() {
Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
connector.setPort(9090);
return connector;
}
}
```
这里使用了Tomcat作为内嵌容器,使用`TomcatEmbeddedServletContainerFactory`来进行配置。通过创建一个新的`Connector`对象,将第二个端口配置为9090,并添加到Tomcat中。
这样配置完成后,你的Spring Boot应用就会同时监听8080和9090两个端口。你可以根据需求进行相应的调整。