工作中刚开始接触了springCloud微服务的一整套,其中有个启动类***Application.java上面有一些注解,不是特别清楚,所以就特地搜索了一下,记录下来。

 

1、通常会用到的注解如下:

//例子代码
@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
@MapperScan("***.***.test.dao")
@EnableRedisHttpSession(maxInactiveIntervalInSeconds=1800)
public class StartApplication{

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

 

2、逐一讲解:

 

##  @SpringBootApplication

标注这个类是属于SpringBoot的启动类,从源代码中可以获悉,这个注解被@Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解。

这里有个注意点:

业务代码要放在这个启动类的下层。

 

##   @EnableFeignClients

加上这个注解,表示这个服务支持调用远程服务,关于使用@FeignClient的详细,可以参考这个帖子:

https://www.cnblogs.com/UniqueColor/p/7130782.html

 

## @EnableEurekaClient

这个注解是必须的,表示这个注解要注册到某个Eureka服务(注册中心)中,就相当于是给这个服务在一个群里面加了一个通行证,通行证的具体内容就涉及到了application.yml配置文件里面了,一般在配置文件中会有下面的配置:

eureka:
  client:
    serviceurl:
      defaultZone: http://127.0.0.1:8761/eureka/

代表注册到上面的那个注册中心。这个注册中心里面的服务包括里面的所有的接口都可以通过协商(对方暴露接口)之后直接按照规则调用。

 

##  @MapperScan

上面的那个注解是用来标注扫描dao范围的,这里如果你使用的MyBatis的话,需要通过配置文件来指定Mapper和主要的配置文件的位置,配置文件大概如下:

mybatis:
  config-location: classpath:  classpath:com/test/****/sqlmap/config.xml
  mapper-locations: classpath:com/test/****/sqlmap/*/*.xml

上面的配置要根据自己的项目的具体模块优化。

 

##  @EnableRedisHttpSession

这里是通过这个注解获得缓存session的内容,还需要配合配置文件完成,主要是session的配置:

spring:
  redis:
    host: 127.0.0.1
    password: ****
    port: ****

如果在代码中需要用到session内容时,直接使用注解即可:

@Autowired
private HttpServletRequest request;


//代码中直接使用上面的request可以获得session
HttpSession session = request.getSession();
Object *** = session.getAttribute("***");

通过上面的办法可以获得请求中的Session。

maxInactiveIntervalInSeconds的作用就是设置redis销毁session的时间,可以根据具体的业务配置。

 

##  拓展:还有一种方法可以快速获得session,这个是属于SpringMVC的特性,不展开了,直接上代码。

package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloWorldController {
	@RequestMapping("/cookieValueTest")
	public void cookieValueTest(@CookieValue(value="JSESSIONID")String sessionId) {
		System.out.println("通过@CookieValue获得JSESSIONID:"+sessionId);
	}
}

上面那些就是启动类会经常用到的几个注解。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐