springboot学习

springboot有什么好处?

简化xml(除外mybatis)
独立的应用程序(Jar/war(jsp))
单独war工程-不需要集成tomcat插件运行。(内嵌入一个tomcat)
1. 创建独立的 Spring 应用程序
2. 嵌入的 Tomcat,无需部署 WAR 文件
3. 简化 Maven 配置
4. 自动配置 Spring
5. 提供生产就绪型功能,如指标,健康检查和外部配置
6.开箱即用,没有代码生成,也无需 XML 配置。

快速入门

1.创建一个maven项目helloworld,新建类HelloController.java

@RestController //等同于@Controller+@ResponseBody,表示该类下的所有方法默认加上注解@ResponseBody,返回json格式字符串
@EnableAutoConfiguration //让SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello";
    }

    public static void main(String[] args) {
        //运行这个main方法,这个web程序就可以进行访问了
        SpringApplication.run(HelloController.class,args);
    }
}

2.配置pom.xml:

<!--必须要引入继承 springboot-parent 帮我们实现了很多jar依赖管理 不需要再去写jar版本-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
    </parent>

    <dependencies>
        <!--springmvc (springboot默认集成) spring-web依赖即可-->
        <!--spring-web 组件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3.springboot启动:
执行该类的main函数,然后打开浏览器输入http://localhost:8080/hello,页面显示结果:hello
注意:springboot只能有一个入口进行访问,也就是说不要建立多个main函数执行类,这样会导致Tomcat的端口占用,因为在不同类每执行一次main函数相当于重新开启了一个Tomcat。
解决方案:单独创建一个类作为程序的唯一入口,并且加上扫描包路径,这样其他的类就不用自己写main函数启动了。

@EnableAutoConfiguration
//需要扫描加载的包路径
@ComponentScan(basePackages = "com.ft.controller")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}

web开发

1.静态资源访问:
我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件1.jpg。启动程序后,尝试访问http://localhost:8080/1.jpg。如能显示图片,则配置成功。
注意:路径中不需要出现static,springboot已经自己映射好了。

2.全局异常捕获:首先模拟一个异常类

@RestController
@EnableAutoConfiguration
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello";
    }

    @RequestMapping("/hello2")
    public String hello2(){
        int i=10/0; //这里会出现分母为0的异常
        return "hello2";
    }
}

然后新建一个异常处理类GlobalExceptionHandler.java

@ControllerAdvice
public class GlobalExceptionHandler {
    @ResponseBody
    //捕获运行时异常
    @ExceptionHandler(RuntimeException.class)
    public Map<String,Object> exceptionHandler(){
        Map map=new HashMap();
        map.put("code",500);
        map.put("msg","异常报错");
        return map;
    }
}

当代码执行到异常类里的

int i=10/0; //这里会出现分母为0的异常

时,会直接跳入到异常处理类里面的exceptionHandler方法中,执行完后页面返回结果

{“msg”:”异常报错”,”code”:500}

注意:我这里的异常信息返回的是一个json字符串,异常信息也可以返回的是一个页面,只需要在exceptionHandler方法里返回页面即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值