提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
springboot大整合
开胃菜
和传统的SSM相比,无需大量的配置(约定大于配置)
对依赖的版本能够进行有效的管理,避免了依赖的版本不兼容的情况
内置的tomcat容器,启动 部署方便。
提示:以下是本篇文章正文内容,下面案例可供参考
一、如何编写一个springboot程序??
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、核心注解?
1.@ConfigurationProperties
配置属性 将配置文件中的指定的属性值绑定到bean里
@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
/**
* 自定义视图
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/index").setViewName("index");
//定义跳转到主页面的视图
registry.addViewController("/dashboard.html").setViewName("dashboard");
}
2.@PropertySource
导入局部的配置文件.properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.type-aliases-package=com.jiahui.pojo
spring.mvc.date-format=yyyy-MM-dd
#使用thymeleaf 清空浏览器缓存
spring.thymeleaf.cache=false
# server.servlet.context-path=/springboot-crud
spring.messages.basename=i18n.login
3.@ImportResource
识别XML配置文件 -->目的:使用XML的方式管理bean
在springboot中默认是不识别xml,所以我们使用java配置类的方式来管理bean
3.@Configuration
public class 类{
@Bean
public 被管理的bean的类型 bean的名称(){
return new 被管理的bean的类型();
}
}
**
三 springboot中如何注入属性的?
- 编写一个pojo类,用来绑定配置文件里面定义的属性值
在application.yml里面定义属性(属性的名称必须要和pojo类里面的属性保持一致)
进行绑定的操作 使用@ConfigurationProperties(prefix=“person”)
**
四、springboot整合第三方技术?
整合日志: 加入日志启动类
**1.导入 日志配置文件 log4j.properties**
推荐使用lombok插件
导入lombok的依赖
下载lombok插件
**2.整合Aop**
加入AOP依赖 AspectJ的依赖
定义目标类
定义切面类
@Aspect
@Component
public class MyAspect{
@Before(value-"execution(public * com.yousian.controller.UserController.addUser(..))")
public void before(){}
}
**3.springboot整合mybatis**
引入mybatis的启动器
编写配置文件(数据源 用户名 密码 驱动类 别名 等。。。。)
定义接口 及实现
定义service 和 controller
**4. 模板引擎整合**
springboot整合模板引擎 thymeleaf
引入thymeleaf的启动器
在HTML页面引入thymeleaf的命名空间
五、 如何进行异常处理??
1.默认处理规则。如果后台资源出来了异常,在默认的情况下,会去templates目录寻找error.html的资源
更细致的处理方式:
在templates目录下面创建error目录,在error目录里面,以异常代码命名文件 404.html 500.html
2.@ExceptionHandler注解处理(只能处理当前的controller类里面的异常)
在controller类里面进行处理
// 处理算术异常
@ExceptionHandler(value = {java.lang.ArithmeticException.class})
public ModelAndView handleArithmeticException(Exception e){
ModelAndView mv = new ModelAndView();
mv.addObject("error",e.toString());//向页面展示错误信息
mv.setViewName("error1");
return mv;
}
3.全局处理异常@ControllerAdvice + @ExceptionHandler处理
定义一个异常处理类
@ControllerAdvice //标识当前类是一个全局异常处理类
public class GlobalException {
// 处理算术异常
@ExceptionHandler(value = {java.lang.ArithmeticException.class})
public ModelAndView handleArithmeticException(Exception e){
ModelAndView mv = new ModelAndView();
mv.addObject("error",e.toString());//向页面展示错误信息
mv.setViewName("error1");
return mv;
}
}
4.使用SimpleMappingExceptionResolver来处理(不能显示异常的具体信息)
首先需要将SimpleMappingExceptionResolver类注入到spring容器;
@Configuration
public class GlobalExceptionHandler {
@Bean
public SimpleMappingExceptionResolver getExceptionResolver(){
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
Properties properties = new Properties();
/**
* 参数1:处理的具体的异常的类型
* 参数2:处理异常需要跳转到的视图
*/
properties.put("java.lang.NullPointerException","error3");
properties.put("java.lang.ArithmeticException","error3");
properties.put("java.lang.ArrayIndexOutOfBoundsException","error3");
resolver.setExceptionMappings(properties);
return resolver;
}
}
5.HandlerExceptionResolver 来进行全局异常处理
定义一个类,实现HandlerExceptionResolver 接口即可
public class MyExceptionReslover implements HandlerExceptionResolver {
/**
* 处理异常的方法
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param ex
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
Object o, Exception ex) {
ModelAndView mv = new ModelAndView();
// 判断不同异常类型,做不同视图跳转
if (ex instanceof ArithmeticException) {
mv.setViewName("error4");
}
if (ex instanceof NullPointerException) {
mv.setViewName("error5");
}
mv.addObject("error", ex.toString());
return mv;
}