您当前的位置: 首页 >  微服务

微服务技术系列教程(13) - SpringBoot - 其它

杨林伟 发布时间:2019-11-11 10:38:06 ,浏览量:2

SpringBoot的基本知识在前面大致过了一遍,下面整理余下关于SpringBoot的知识。

1. 使用@Scheduled创建定时任务

在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置

@Component
public class ScheduledTasks {
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        System.out.println("现在时间:" + dateFormat.format(new Date()));
    }
}
2. 使用@Async实现异步调用

1.启动类加上@EnableAsync

@EnableAsync // 开启异步注解
@SpringBootApplication
public class App {

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

}

2.需要执行异步方法上加入 @Async,在方法上加上@Async之后 底层使用多线程技术:

@Service
@Slf4j
public class UserService {

	@Async // 类似与开启线程执行..
	public void userThread() {
		log.info("##02##");
		try {
			Thread.sleep(5 * 1000);
		} catch (Exception e) {
			// TODO: handle exception
		}
		log.info("##03##");

		// new Thread(new Runnable() {
		// public void run() {
		// log.info("##02##");
		// try {
		// Thread.sleep(5 * 1000);
		// } catch (Exception e) {
		// // TODO: handle exception
		// }
		// log.info("##03##");
		// }
		// }).start();
	}

}
3. 自定义参数

配置文件:

name=ylw

配置文件值:

@Value("${name}")
private String name;
@ResponseBody
@RequestMapping("/getValue")
public String getValue() {
	return name;
}
4. 多环境配置
spring.profiles.active=pre

application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
5. 修改端口号
server.port=8888 
server.context-path=/ylw
6. yml 使用

SpringBoot 默认读取 application.yml|properties

YML 比properties配置文件更加节约 简约(结构)

创建application.yml:

server:
  port:  8090
  context-path: /itmayiedu
7. SpringBoot拦截器

1.创建拦截器(创建模拟登录拦截器,验证请求是否有token参数)

@Slf4j
@Component
public class LoginIntercept implements HandlerInterceptor {

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		log.info("开始拦截登录请求....");
		String token = request.getParameter("token");
		if (StringUtils.isEmpty(token)) {
			response.getWriter().println("not found token");
			return false;
		}
		return true;
	}

}

2.注册拦截器

@Configuration
public class WebAppConfig {
	@Autowired
	private LoginIntercept loginIntercept;

	@Bean
	public WebMvcConfigurer WebMvcConfigurer() {
		return new WebMvcConfigurer() {
			public void addInterceptors(InterceptorRegistry registry) {
				registry.addInterceptor(loginIntercept).addPathPatterns("/*");
			};
		};
	}

}

3.拦截器与过滤器区别

拦截器是AOP( Aspect-Oriented Programming)的一种实现,底层通过动态代理模式完成。

  1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
  2. 拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
  3. 拦截器只能对Controller请求起作用,而过滤器则可以对几乎所有的请求起作用。
  4. 在Controller的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

过滤器应用场景:设置编码字符、过滤铭感字符 拦截器应用场景:拦截未登陆用户、审计日志()

8.发布打包

1.Jar类型打包方式

  • 使用mvn celan package 打包
  • 使用java –jar 包名

2.war类型打包方式

  • 使用mvn celan package 打包
  • 使用java –jar 包名

3.外部Tomcat运行 使用mvn celan package 打包 将war包 放入到tomcat webapps下运行即可。 注意:springboot2.0内置tomcat8.5.25,建议使用外部Tomcat9.0版本运行即可,否则报错版本不兼容。

打包常见错误,如果报错没有主清单,在pom文件中新增:


	
		
			org.apache.maven.plugins
			maven-compiler-plugin
			
				1.8
				1.8
			
		
		
			org.springframework.boot
			spring-boot-maven-plugin
			
				com.app.App
			
			
				
					
						repackage
					
				
			

		
	

Java jar 执行的时候报错 ’ 不是内部或外部命令 说明 jdk环境没有安装!

未完待续。。。

总结

在这里插入图片描述

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 2浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0507s