Spring boot注解2

1. @SpringBootApplication
2. @ComponentScan
  1. is used to find beans
  2. and the corresponding injected with @Autowired annotation.
3. @Autowired
4. @Value

@value("{property_key-name:default_value}") @Value("{spring.application.name:demoservice}")
private String name

5. @ConfigurationProperties(prefix = "fame.config")

同 4 ,不同在于不用一个一个获取即写多个@Value

@ConfigurationProperties(prefix = "fame.config")
public class config {}

https://www.cnblogs.com/tanwei81/p/6814022.html

Lombok 常用注解

  1. @NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
  2. @AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
  3. @Synchronized : 加个同步锁
  4. @NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常
  5. @Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
  6. @Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
  7. @Builder : 被注解的类加个构造者模式
  8. @SneakyThrows : 等同于try/catch 捕获异常
  9. @Cleanup 注解用在变量前,可以保证此变量代表的资源会被自动关闭
  10. @Getter/@Setter 用在变量前
  11. @ToString/@EqualsAndHashCode
    生成toString,equals和hashcode方法,同时后者还会生成一个canEqual方法,用于判断某个对象是否是当前类的实例,生成方法时只会使用类中的非静态和非transient成员变量
    12 .@Log/@Log4j/@Slf4j \

参考博客:https://blog.csdn.net/sunsfan/article/details/53542374

Model层(JPA实体类)的常用注解

  1. @Data 是lombok的注解,自动生成Getter、setter、toString,构造函数等
  1. @Entity 注解这是个实体类,对应数据库中的一个表
  1. @Table注解表相关,指定这个类对应数据库中的表名,如果和数据库的命名方式相同,可以省略如FlowType对应表名flow_type
  1. @Id 注解主键,@GeneratedValue 表示自动生成@GeneratedValue(strategy=GenerationType.IDENTITY)指定主键的生成方式,此为自增
  1. @Column 针对一个字段,对应表中的一列,字段别名,是否允许为空,是否唯一,是否进行插入和更新(比如由MySQL自动维护)

    name 表示对应数据表中的字段名
    insertabe 表示插入是否更新
    updateable 表示update时候是否更新
    columnDefinition表示字段类型,当使用jpa自动生成表的时候比较有用
  1. @DynamicUpdate,@DynamicInsert 注解可以动态的生成insert、update 语句,默认会生成全部的update
  2. @Transient 标识该字段并非数据库字段映射
  3. @JsonProperty 定义 Spring JSON 别名,
    @JsonIgnore 定义 JSON 时忽略该字段,
    @JsonFormat 定义 JSON 时进行格式化操作
  4. @PrePersist 表示持久化之前执行
  5. @PreUpdate 表示Update操作之前执行
  6. @Where当执行查询语句时,会附带这个条件
    12 .@MappedSuperclass 表示一个这是一个父类,不会被当成一个实体类。在这里定义一些表中的通用字段。然后其他实体类继承这个类就可以了,避免写重复代码。

Controller层常用注解

  1. @Controller处理http请求,用来响应页面
    必须配合模板来使用
    如:Thymeleaf(官网使用)
    Groovy
    return "hello" // 返回hello模板,如果是@RestController就返回hello字串
    1.1 @PathVariable 获取url中的数据 ,变量前修饰
    1.2 @RequestParam 获取请求参数的值 变量前修饰
    1.3 GetMapping (是@RequestMapping(method = RequestMethod.GET)的缩写)组合注解 方法上
    1.4 PostMapping 组合注解,方法上
    1.5 DeleteMapping 组合注解,方法上 \
  1. @RestController
    Spring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合。
    @ResponseBody和@Controller的组合注解
  1. @RequestMapping 配置url映射
    可以作用在控制器某个方法上,也可以作用在此控制器类上
    1 在类级别上添加@RestMapping注解: 会应用到控制器的所有方法上(相当于设置了base_url)
    2 在方法上时,对类级别的映射进行扩展 base_url/path
  1. @ControllerAdvice
  1. 接口类项目开发,为了便于后期查找问题,一般会使用拦截器或者过滤器记录每个接口请求的参数与响应值记录
    @ControllerAdvice 捕获Controller层抛出的异常,如添加@response返回信息为Json格式
    @RestControllerAdvice 相当于 @ControllerAdvice 与 @Response结合体 \
  1. @Controller是Springmvc controller增强器,是组件注解,使其实现类能够被classpath扫面自动发现,遵循MVC命令空间啥的是默认自动开启的
  2. @ControllerAdvice以下的注解方法会被应用到控制器类层次的所有@RequestMapping上:
  1. ModelAttribute:暴露@RequestMapping 方法返回值为模型数据
    放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。
  2. @InitBinder 用于定义@RequestMapping 方法参数绑定,即应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
    @InitBinder
    public void initBinder(WebDataBinder binder) {}
   3. ResponseBodyAdvice: 用于@ResponseBody返回值增加处理(重写某些方法)
   4. @ModelAttribute
      在Model上设置的值,对于所有被 @RequestMapping 注解的方法中,都可以通过 ModelMap 获取 \
            /**
               * 把值绑定到Model中,使全局@RequestMapping可以获取到该值
               * @param model
               */
              @ModelAttribute
              public void addAttributes(Model model) {
                  model.addAttribute("author", "Magical Sam");
              }
              
              
              @RequestMapping("/home")
              public String home(ModelMap modelMap) {
                  System.out.println(modelMap.get("author"));
              }
          
              //或者 通过@ModelAttribute获取
          
              @RequestMapping("/home")
              public String home(@ModelAttribute("author") String author) {
                  System.out.println(author);
              }
      
   5. @ExceptionHandler
      1. SpringBoot提供了一个默认映射:/error,当处理中抛出异常之后,会转到请求中处理,并且该请求有一个全局的错误页面来展示异常 \
      2. @ExceptionHandler用来定义函数针对的异常类型 \
         1. Exception对象(@ExceptionHandler(value = Exception.class))和请求url出错时映射到error.html中
         2. Exception对象和请求url出错时返回json对象
      3. 只能针对于Controller层的异常,意思是只能捕获到Controller层的异常,在service层或者其他层面的异常都不能捕获,Controller层做了catch处理就不能捕获了
      
4. ControllerAdvice初始化:
   Spring mvc 启动时调用RequestMappingHandlerAdapter类的initControllerAdviceCache()方法进行初始化
5. 是spring4.1的新特性,其作用是在响应体写出之前做一些处理;比如,修改返回值、加密等

    @ControllerAdvice
    public class ResponseAdvisor implements ResponseBodyAdvice<Object> {}
  1. Springcloud配置服务器
    https://www.cnblogs.com/hellxz/p/9306507.html

4. Interceptor

Before sending the request to the controller

Before sending the response to the client \

比如可以在此过程中对header进行添加操作 拦截器 登录 。。。 \

实现:\

  1. @Component \
  1. implement the HandlerInterceptor interface \
  1. registering this Interceptor with InterceptorRegistry by using WebMvcConfigureAdapter

<pre spellcheck="false" class="md-fences md-end-block contain-cm modeLoaded" cid="n104" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, "Liberation Mono", Courier, monospace; font-size: 0.9em; white-space: normal; display: block; break-inside: avoid; text-align: left; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(223, 226, 229); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;" lang="" contenteditable="false">@Component
public class ProductServiceInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

return true;
}
@Override
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception exception) throws Exception {}

-----注册-------
public class ProductServiceInterceptorAppConfig extends WebMvcConfigurerAdapter {
@Autowired
ProductServiceInterceptor productServiceInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(productServiceInterceptor);
}
}</pre>


Mybatis

简化JDBC代码,使代码保持简洁 \

学习博客: https://www.cnblogs.com/wlsblog/p/7879263.html

1. XML文件配置及映射文件
2. Java Api

MyBatis的主要Java接口就是SqlSession \

  1. SqlSession由SqlSessionFactory创建(由Sql SessionFactoryBuilder创建)-XML创建,代码创建等 \
1.  配置configuration实例,然后传给builder()方法来创建SqlSessionFactory \
    
    
2.  SqlSessionFactory 有6个方法来创建SqlSession实例,有几个考虑点:\
    
    
    
    Transaction: \
    
    
    
    Connection: \
    
    
    
    Execution: \
    
    
    
    通过重载openSession()方法签名 \
    
    
    
    语句执行方法 \
    
    
3.  映射器类 \
    
    
    1.  大部分基于XML的映射器元素都提供了相应的注解配置项,然而基于注解配置还不能完全支持XML的一些元素
        
        
    2.  映射器接口不需要去实现任何借口或扩展任何类,只要方法前面可以被用来唯一标识对应的映射语句就OK了 \
        
        
    3.  映射器注解: \
        
        
    @Insert(Statement,x)
    @Options(useGenerateKeys=true,keyProperty="") //让数据库产生auto_increment(自增长的列),然后将生成的值设置到输入参数对象的属性中
    int insertStudents(Student student);
    ​
    @SelectKey(statement="",keyProperty="",resultType=xx,before=true) : 为任意Sql语句来指定主键值,作为主键列的值,before 优先级</pre>
    
    
    4.  结果映射:\
        
        
        
        将查询结果通过别名或者是@Result主键与JavaBean属性映射起来
        
        
        
        @Select("")
        @Results(
        {
         @Result(id=true,column="",property="")
         @Result(column="",property="")
        })
        @Results 注解和映射器XML配置文件元素<resultMap>对应
        ​
        @Select("")
        @ResultMap -->找到对应的配置文件,把select查询结果映射到配置文件</pre>
        
        
    5.  一对一映射:
        
        
        
        @One 注解来使用嵌套select语句加载一对一关联查询语句,接受的参数为字段列的一个
        
        
    6.  一对多映射:
        
        
        
        @Many 该方法放回一个List<Course>对象,接受的参数为字段列所有
        
        
    7.  动态SQL
        
        
        
        根据输入条件动态地创建SQL语句,SQL语句使用拼接形式非常不友好  ,\
        
        
        
        org.apache.ibatis.jdbc.SQL工具类使用

Spring boot -Admin Server

对 Actuator的提升,因为他有点difficult。如果有n个applications,每个application都要有独立的actuator end point

Amind Server is an application used to manage and monitor your MicroService application

  1. 添加依赖

<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.5.5</version>
</dependency></pre>

  1. 入口类添加@EnableAdminServer

Spring Boot - EurekaServer

Eureka Server is an application that holds the information about all client-service application

  1. Every Micro service will register into Eureka Server
  1. Eureka server knows all the client applications 运行的端口和IP
  1. Discovery Server
  1. 默认地,Eureka Server register itself into the discovery

使用:

  1. 依赖导入
  1. <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency></pre>
  1. @EnableEurekaServer (入口处) - 标志这个application成为Eureka Server
  1. Application.yml 文件配置

Spring Boot Service Registration with Eureka

How to register the Spring Boot Micro service application into the Eureka Server.

  1. 确保Eureka Server 运行
  1. 依赖导入
<dependency>
<groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency></pre>
  1. @EnableEurekaClient (入口处) - 标志这个application成为Eureka Client
  1. application.yml配置文件

eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka
instance:
preferIpAddress: true
spring:
application:
name: eurekaclient</pre>

  1. @Service

具体业务层服务service的实现,和controller层分离

  1. 跨域的实现 WebMvcConfigurer

@CrossOrigin(origins = "http://localhost:8080") //RequestMapping一起,控制层某个服务
全局跨域的实现

@Bean \\
public WebMvcConfigurer corsConfigurer() {
   return new WebMvcConfigurerAdapter() {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/products").allowedOrigins("http://localhost:9000");
      }    
   };
}
@EnableScheduling

入口类添加 定时任务
@Schedule(cron="",fixRate) 具体实现

kafka

https://blog.csdn.net/lingbo229/article/details/80761778

https://www.cnblogs.com/scode2/p/8984937.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容