浅谈-SpringBoot 2.0基础

一,什么是SpringBoot:

SpringBoot是当前很火的一种快速开发框架,可以更快的整合第三方框架。

可以从四个方面来说明SpringBoot

  • 与Maven依赖关系,继承Maven
  • 完全注解化,简化了传统Spring框架的XML配置
  • 内置Http服务器,默认Tomcat服务器
  • 以java应用程序进行执行(即main()方法)

 

二,创建一个SpringBoot项目

    SpringBoot 2.0框架需要JDK版本必须是JDK8及以上,同样建立一个maven-webapp项目,war类型,在pom.xml中加入常用依赖信息:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

点进这段配置之中,会看到关于SpringBoot中dependencies

再点进去,会发现里面封装很多的jar包配置信息,这里就只截取一段代码图

 这里就和开始我提到的SpringBoot定义中的Maven依赖继承关系,parent封装了常用jar与版本号,同时也可以稍微理解SpringBoot快速的原因了,对常见的一些依赖关系进行了封装直接从父类中拿就行了。

看到这儿话不多说,直接整合一下SpringMVC

        <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-web</artifactId>
	  	<!-- 不需要版本号,因为parent中都封装了版本号 -->
	</dependency>

SpringBoot是全注解的方式,内置 Http服务器的同时,也就是我们在使用框架的时候,不用再配置web.xml。下面写一个控制层,通过java应用main方法来启动

@Controller
public class FirstSpringBoot {
	@ResponseBody
	@RequestMapping("/firstSpringBoot.action")
	public String toSpringBoot(){
		return "My First SpringBoot Cs";
	}
}
	
@SpringBootApplication
public class App {
	/**
	 * 整个程序的入口,启动SpringBoot内置的Tomcat默认服务器,使用tomcat加载SpringMVC  注解启动类
	 * @param args
	 */
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

启动main方法

来到服务器端:

通过ResponseBody返回json数据到前台服务器。

 

三,SpringBoot三种装配方法

上面的App.class用到了注解@SpringBootApplication,这是一种装配注解,另外还有两种注解

@EnableAutoConfiguration

嵌套装配注解

@EnableAutoConfiguration

@ComponentScan("*.*")

对于三种注解的解释:

封装 配置相关的注解与配置代码
 * 装配方法1:@EnableAutoConfiguration: 自动装配 
 * 				默认扫包范围:当前类里面
 * 装配方法2:@EnableAutoConfiguration
 *		   @ComponentScan("com.yc")
 *		扫描指定包下的所有类
 * 装配方法3:@SpringBootApplication
 * 		扫描当前包和同级子包
 * 		  缺点:对性能的优化并不好

我的包结构如此:

 

四,访问静态资源

这里就以访问一张图片为例吧,SpringBoot访问静态资源的默认地址为src/main/resources 下的资源

这里创建一个static文件包,里面放入图片同样用App.class进行启动

访问时注意:访问url中不可以出现static,如果需要static,建双重文件夹static

 

五,Freemarker视图层  --------   渲染web视图

1,导入依赖:

<!-- freemarker依赖包 -->
   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>

这个比较简单,直接进行挂代码测试结果(默认src/main/resources 下的Templates中 .ftl文件)

@Controller
public class FtlIndex {
	@RequestMapping("/ftlIndex.action")
	public String ftl(Map<String,String> map){
		map.put("name", "fyh");
		map.put("age", "21");
		map.put("sex", "男");
		//默认跳转后缀为 .ftl
		return "FTlIndex";
	}
}

六,整合jsp 视图

/**
 * JSP整合SpringBoot
 * @author Administrator
 *
 */
@Controller
public class JspController {
	@RequestMapping("/jspIdex.action")
	public String indexJsp(){
		return "index";
	}
}

jsp中的内容

 运行结果:

 

 

七,全局捕获异常:

       作用:

               为了避免代码中多个try...catch..,全局捕获异常可以减少代码的冗余度

               应用于日志中,监视代码问题

全局捕获异常有两种方式,我主要说明一下json数据的方式

1,全局捕获类:

@ControllerAdvice(basePackages="com.yc.controller")
public class ErrorCatchException {
	/**
	 * 返回的json数据(方法一)
	 * 使用ModeAndView返回一个页面报异常(方法二)
	 * @return
	 */
	@ResponseBody
	@ExceptionHandler(RuntimeException.class)
	public Map<String,Object> runExce(){
		Map<String,Object> map = new HashMap<String,Object>();
		map.put("errorCode", 500);
		map.put("errorMsg", "系统错误");
		return map;
	}
	
}

2,写一个异常类测试

@Controller
public class ErrorException {
	private static final Logger logger = LoggerFactory.getLogger(ErrorException.class);
	@ResponseBody
	@RequestMapping("/error.action")
	public String Error(){
		logger.info("Spring集成日志");
		int i=0;
		int j=1/i;
		return "success" + j;
	}
}

测试演示

 

八,整合日志log4j

引入依赖:

	<!-- 日志依赖包 -->
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-log4j</artifactId>
	    <version>1.3.8.RELEASE</version>
	</dependency>

下面是我的日志请求内容与记录,返回

@Aspect
@Component
public class WebLogAspect {

	private static final Logger logger = LoggerFactory.getLogger(ErrorException.class);
	
	@Pointcut("execution(public * com.yc.controller.*.*(..))")
	public void webLog(){
	}
	
	@Before("webLog()")
	public void doBefore(JoinPoint joinPoint){
		//接收到的请求,记录请求内容
		ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
		HttpServletRequest request = attributes.getRequest();
		//记录以下请求内容
		logger.info("URL:" + request.getRequestURL().toString());
		logger.info("HTTP_METHOD:" + request.getMethod());
		logger.info("IP:" + request.getRemoteAddr());
		Enumeration<String> enu = request.getParameterNames();
		while(enu.hasMoreElements()){
			String name = (String)enu.nextElement();
			logger.info("name:{},value:{}",name,request.getParameter(name));
		}	
	}
	@AfterReturning(returning ="obj", pointcut="webLog()")
	public void doAfterReturning(Object obj){
		//处理完请求,返回内容
		logger.info("RESPONSE: " + obj);
	}

}

上面的异常测试类,日志输出内容演示

 

自学的SpringBoot基础内容就到这里了,如果还有什么不足也请留言告知,共同进步。

 

 

 

 

 

 

 

 

 

   

 

 

          

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值