一文道尽servlet spring springboot springcloud的区别

背景

最近在看java的框架,一直在spring和springcloud之间来回绕。为了弄清楚这几个框架之间的关系,专门写了每一个实例程序这样就比较清楚了。下面就把这几个概念详细介绍下

servlet

Servlet是指Java语言实现的一个接口。其实通俗讲,就是把url访问映射到相应的servlet类。最明显的使用就是要自己实现Servlet接口。

···
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 使用 GBK 设置中文正常显示
        response.setCharacterEncoding("GBK");
        response.getWriter().write("菜鸟教程:http://www.runoob.com");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}·

spring

spring是一套复杂的框架,里面有诸多组件。为了对比spring带来的变化,使用springMVC来实例。同样的对一个api的实现。spring的核心代码如下。

@Controller
public class helloworld
{
    @RequestMapping("/click")
    public String hello()
    {
        System.out.println("hellowolrd");
        return "result";
    }
}

可以看到 使用spring后需要些的代码确实大幅度减少了。但是在使用时候会有复杂的配置。需要配置servlet.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"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

        <!-- 配置自动扫描的包 -->
        <mvc:annotation-driven/>
        <context:component-scan base-package="com.spring.handlers">
        <!--context:include-filter type="annotation" expression="com.spring.handlers.helloworld"/-->
        </context:component-scan>

        <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 -->
       <!--prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀), -->
    <!-- 比如传进来的逻辑视图名为result,则该该jsp视图页面应该存放在“/WEB-INF/result.jsp”  -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name = "prefix" value="/WEB-INF/"></property>
            <property name = "suffix" value = ".jsp"></property>
        </bean>
</beans>

springboot

可以看到spring的配置相对比较复杂且繁琐,所以有了springboot框架来帮忙简化这一操作。同时,springboot在打包时也可以直接将tomcat打包进去,方便了部署。springboot的核心代码

/**
 *  * @SpringBootApplication:标注一个主程序类,用来标明这是一个Spring Boot应用
 *   */
@SpringBootApplication
public class SpringBootApplicationMain {
    public static void main(String[] args) {
     SpringApplication.run(SpringBootApplicationMain.class, args);
    }
}
@RestController
public class HelloWorldController {

    @RequestMapping("/hello")
    public String say(){
        return "Spring Boot";
    }
}

springboot 只需要写这些,不用再去配置servlet就可以达到同样的效果。

springcloud

springcloud 其实是提供了一整套微服务的解决方案。提到微服务可以看到springclcoud把一个个的程序都封装成了一个一个微服务。所以springcloud实际上可以认为是承载了诸多的springboot的应用解决方案。
这里举例子启动了一个 springcloud中的应用注册中心示例。

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

总结

基于此可以看到 servlet是spring的基础。
springboot是为了简化spring的配置,并封装成了微服务。
springcloud是一套微服务的解决方案。
具体代码示例 请看
https://github.com/ssdxiao/spring-learn

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringSpring Boot都有一些常用的注解,用于配置和管理应用程序的各个方面。以下是一些常见的注解: 1. @Configuration: 这个注解用于标识一个类是配置类,其中定义了一些Bean的配置信息。 2. @ComponentScan: 这个注解用于指定要扫描的包,以查找和注册Spring组件。 3. @EnableAutoConfiguration: 这个注解用于启用Spring Boot的自动配置功能,根据类路径上的依赖自动配置Spring应用程序。 4. @Value: 这个注解用于从配置文件中读取属性值,并将其注入到对应的变量中。 5. @Controller: 这个注解用于标识一个类是控制器,处理HTTP请求并返回响应。 6. @Service: 这个注解用于标识一个类是服务类,执行业务逻辑和计算。 7. @Repository: 这个注解用于标识一个类是数据访问对象(DAO),用于访问数据库。 8. @Transactional: 这个注解用于标识一个方法或类需要在事务中执行,确保数据的一致性和完整性。 9. @Scheduled: 这个注解用于标识一个方法是定时任务,可以按照指定的时间间隔或表达式执行。 这些注解可以帮助开发者更方便地配置和管理SpringSpring Boot应用程序的各个方面。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [SpringSpringboot常见注解](https://blog.csdn.net/ynkimage/article/details/131364804)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Spring 最常用的 7 大类注解,一文整理!这些注解你都有用过吗?](https://blog.csdn.net/seven9711/article/details/113203148)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值