SpringBoot的使用的注解以及监控监控和lombok使用

news2024/9/20 14:30:56

目录

修改SpringBoot项目中依赖的版本号

为什么默认是8.0.23版本

修改方法

第一种 :直接在pom.xml中引入相关依赖时直接指定版本号

第二种:在pom.xml中的属性中进行修改

 SpringBoot自动化配置web项目

@Configuration注解

@Import注解

1.导入Bean

2.导入外部配置类

3.导入ImportSelect实现类,批量生成bean

 4.导入ImportBeanDefinitionRegistrar实现类

@ConditionalOnBean

@ConfigurationProperties

@SpringBootApplication注解

@SpringBootConfiguration

@ComponentScan(    excludeFilters = {@Filter(    type = FilterType.CUSTOM,    classes = {TypeExcludeFilter.class}), @Filter(    type = FilterType.CUSTOM,    classes = {AutoConfigurationExcludeFilter.class})})

SpringBoot健康监控

服务端配置

导入依赖

在引导类中添加注解@EnableAdminServer

修改服务端端口号

 客户端配置,即自己写的程序

导入依赖

编写yml文件配置信息

启动服务端和客户端,并访问服务端

​编辑 lombok使用

然后@Data注解可以替换这三个注解

使用@Accessors让这个类可以链式编程

 使用@Builder,不使用链式编程

使用@Slf4j注解打日志


修改SpringBoot项目中依赖的版本号

在SpringBoot项目中导入数据库驱动的默认版本号为8.0.23

   <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
<!--            <scope>runtime</scope>-->
        </dependency>

为什么默认是8.0.23版本

因为在parent中定义了这些导入依赖坐标的版本号,避免坐标冲突。

我们可以进入源码查看

修改方法

第一种 :直接在pom.xml中引入相关依赖时直接指定版本号

第二种:在pom.xml中的<properties>属性中进行修改

 <properties>
        <java.version>1.8</java.version>
        <mysql.version>8.0.13</mysql.version>
    </properties>

 SpringBoot自动化配置web项目

1.依赖版本和依赖坐标自动导入

2.自动化配置

        自动配好SpringMVC

  •                 引入SpringMVC全套组件
  •                 自动配好SpringMVC常用组件(三大组件,文件上传等)

        自动配好web常见功能,如:字符编码问题,静态资源管理

3.自动配好tomcat

@Configuration注解

让当前类变成配置类,代替配置文件

@Configration注解中的proxyBeanMethods属性功能

        proxyBeanMethods=true:Full模式,保证每个@Bean方法(配置类对象.getXxx()方法)被调用多少次返回的bean对象都是单例的即 和直接从容器中获取的bean对象是同一个

        proxyBeanMethods=false:Lite模式,每个@Bean方法 (getXxx())被调用时返回的bean对象都是重新new出来的

@Import注解

1.导入Bean

如:@Import(普通类.class)

会执行当前类的构造方法创建对象,并存到IoC容器,生成的bean名称类为:该普通类的全路径

2.导入外部配置类

如:@Inport(xxxConfig.class)

会创建xxxConfig类的bean,并且改配置类中带有@Bean注解的方法,都会创建@Bean方法返回对象的bean,生成bean的名称为:@Bean方法名

3.导入ImportSelect实现类,批量生成bean

public class MyImportSelect implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        return new String[]{"com.hhh.pojo.Person"};//定义需要生成bean类的全路径
    }
}
@Configuration
@Import(MyImportSelect.class)
public class BookConfig {
}

结果就会生成Person类的bean,并加入到IoC容器

注意:MyImportSelect类不会生成bean

 4.导入ImportBeanDefinitionRegistrar实现类

public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Book.class).getBeanDefinition();
        registry.registerBeanDefinition("book1",beanDefinition);//给这个bean起名字为book1
    }
}
@Configuration
@Import({MyImportSelect.class, MyImportBeanDefinitionRegistrar.class})
public class BookConfig {
}
public class SpringTest {
    public static void main(String[] args) {
        ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class);
        Person bean = ctx.getBean(Person.class);
        Book book1 = (Book) ctx.getBean("book1");
        System.out.println(book1);//com.hhh.pojo.Book@7748410a
       // System.out.println(bean);
    }

}

@ConditionalOnBean

@ConditionalOnBean(Person.class)//IoC容器中有这个Person类的bean才会让这个配置类生成bean

@Configuration
@ConditionalOnBean(Person.class)//IoC容器中有这个Person类的bean才会让这个配置类生成bean
public class MyConfig {
}

@ConfigurationProperties

根据prefix属性值进行赋值

 获取yml文件中的属性信息,并把yml文件中的属性值与对象类进行映射,并生成这个类的bean

@SpringBootApplication注解

 @SpringBootApplication注解由三个注解组成

@SpringBootConfiguration

 作用跟@Configuration差不多

@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)

 这个注解的意思就是会扫描与SpringBoot引导类处于同一路径下的所有包

SpringBoot健康监控

服务端配置

导入依赖

 <!--Spring Boot Admin Server监控服务端-->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.3.1</version>
        </dependency>

在引导类中添加注解@EnableAdminServer

@SpringBootApplication
@EnableAdminServer
public class SpringDay8ServerApplication {

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

}

修改服务端端口号

 客户端配置,即自己写的程序

导入依赖

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.3.1</version>
        </dependency>

编写yml文件配置信息

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mysql_day2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
    type: com.alibaba.druid.pool.DruidDataSource
  boot:
    admin:
      client: # spring-boot-admin 客户端配置
        url: http://localhost:9999 #服务端连接地址
        username: admin # 服务端账号
        password: admin # 服务端密码
        instance:
          prefer-ip: true # 使用ip注册
  application:
    name: boot_client #项目名称

# 服务端点详细监控信息
management:
  endpoints:
    web:
      exposure:
        include: "*" #以web形式暴露
    enabled-by-default: true #暴露所有端点信息
  endpoint:
    health:
      show-details: always
      enabled: true #开启健康检查详细信息

启动服务端和客户端,并访问服务端

进入

 lombok使用

导入依赖

<!--        lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

 使用lombok我们就不需要自己写set,get,toString等方法,可以分别使用@Getter@Setter@ToString这三个注解,

然后@Data注解可以替换这三个注解

//@Getter
//@Setter
//@ToString
@Data
public class User {
    private String name;
    private Integer age;
    private String address;
}
@Data
@Accessors(chain = true)//允许链式编程
public class User {
    private String name;
    private Integer age;
    private String address;
}

使用@Accessors让这个类可以链式编程

结果:

public class UserTest {
    @Test
    public void testUser(){
        User user=new User();
        user.setName("hhh").setAge(18).setAddress("北京");
        System.out.println(user);
//User(name=hhh, age=18, address=北京)
    }
}

 使用@Builder,不使用链式编程

@Data
//@Accessors(chain = true)//允许链式编程
@Builder
@NoArgsConstructor//无参构造
@AllArgsConstructor//全参构造
public class User {
    private String name;
    private Integer age;
    private String address;
}
public class UserTest {
    @Test
    public void testUser(){
/*        User user=new User();
        user.setName("hhh").setAge(18).setAddress("北京");
        System.out.println(user);*/
        User user = User.builder().name("hhh").age(18).address("北京").build();
        System.out.println(user);//User(name=hhh, age=18, address=北京)
    }
}

使用@Slf4j注解打日志

@Slf4j
@Service
public class UserServiceImpl implements UserService {
    @Override
    public void save() {
        log.info("BookService save");
       // System.out.println("service");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++_进阶:C++11新增语法(2)

文章目录 1.新的类功能1.1 新的默认成员函数2. 类成员变量初始化3. 强制生成默认函数的关键字default4. 禁止生成默认函数的关键字delete:5. final与override关键字 2. 可变参数模板3. lambda表达式3.1 一个使用场景3.2 lambda表达式语法**3.3 lambda捕捉列表详细说明**3.4 **底…

一款好用的研发项目管理软件能为公司带来什么?

一款高效的研发项目管理软件可以为公司带来竞争优势&#xff0c;将项目交付时间缩短45%&#xff0c;提高项目成功率至72%&#xff0c;提高研发效率&#xff0c;缩短上市周期。该软件含有丰富的数据分析功能&#xff0c;可以更好地掌握项目进度&#xff0c;发现和解决问题&#…

Unity教程(十)Tile Palette搭建平台关卡

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

仕考网:考外省公务员可以调回本地吗?

一般情况下&#xff0c;公务员岗位是固定不可随意更换的&#xff0c;因为每个职位都对应特定的职责和要求。一旦考到外地的岗位&#xff0c;想要调回本地几乎是不可能的。因为这样的操作可能导致职位空缺&#xff0c;进而需要通过公共招聘流程来填补&#xff0c;而不是简单地从…

场外期权交易:找到适合你的那一款

各位期权爱好者们&#xff01;今天咱们来聊聊在进行场外期权交易时&#xff0c;怎么去评估和选择适合自己风险承受能力的期权产品。 第一&#xff0c;你得对自己有个清楚的认识。想想看&#xff0c;你是那种激进型的冒险家&#xff0c;还是保守型的稳健派呢&#xff1f;了解自己…

PostgreSQL数据库内核(三):缓冲区管理器

文章目录 共享缓冲区基础知识逻辑读和物理读LRU算法和CLOCK时钟算法 共享缓冲区管理器结构共享缓冲表层共享缓冲区描述符层共享缓冲页层 共享缓冲区管理器工作流程初始化缓冲区读缓冲区淘汰策略共享缓冲区锁 共享缓冲区基础知识 通常数据库系统都会在内存中预留buffer缓冲空间…

elasticsearch集成springboot详细使用

1.es下载&配置 配置JVM 配置跨域 配置https和密码 2.es启动 .\elasticsearch.bat 或 后台启动&#xff1a; nohup ./bin/elasticsearch& 浏览器访问&#xff1a;https://localhost:9200 输入账户&#xff1a;elastic / 123456 3.重置es密码 .\elasticsearch-r…

C:指针和数组之间的关系-学习笔记

目录 闲话&#xff1a; 引言&#xff1a; 1、数组名的理解 2、指针访问数组 3、一维数组传参的本质 4、二级指针 5、指针数组 6、指针数组模拟二维数组 结语&#xff1a; 闲话&#xff1a; 指针这个模块更新的比较慢&#xff0c;主要是小编还得学习指针的知识点&#…

ubuntu18.04 设置静态地址

修改配置文件 sudo vim /etc/netplan/01-network-manager-all.yaml 代码如下&#xff1a; network: version: 2 renderer: NetworkManager ethernets: ens33: # 配置的网卡名称&#xff0c;可以使用ifconfig -a查看本机的网卡 dhcp4: no # 关闭动态IP设置 …

黑神画Ⅹ--自主人工智能代理:从概念到实际应用

自主人工智能代理通过独立执行任务并做出最终决策来改变技术。与传统人工智能不同&#xff0c;它们能够分析、规划、适应并从经验中学习。机器学习和自然语言处理的进步扩大了它们在个人助理、聊天机器人、管理系统和自动驾驶汽车中的应用&#xff0c;展示了它们在各个领域的潜…

springmail发送邮件如何实现邮件动态内容?

springmail发送邮件怎么样&#xff1f;springmail发信优化方法&#xff1f; SpringMail作为一个强大的邮件发送框架&#xff0c;提供了多种方式来实现邮件内容的动态生成。AokSend将探讨如何通过SpringMail发送邮件&#xff0c;并动态生成邮件内容以满足不同的需求。 springm…

【图像去雾系列】使用SSR/MSR/MSRCR/MSRCP/automatedMSRCR算法对单图像进行图像增强,达到去雾效果

目录 一 图像去雾算法概述 二 SSR/MSR/MSRCR算法 三 实践 一 图像去雾算法概述 近些年来,出现了众多的单幅图像去雾算法,其主要可以分为 3 类:基于图像增强的去雾算法、基于图像复原的去雾算法和基于 CNN 的去雾算法。 ▲基于图像增强的去雾算法 通过图像增强技术突出图…

“泰山众筹:革新消费模式“

亲爱的伙伴们&#xff0c;是否渴望探索一种集日常消费与财富增长于一体的创新方式&#xff1f;今天&#xff0c;让我带您领略泰山众筹的魅力&#xff0c;这一革命性的消费增值理念&#xff0c;将彻底颠覆您的消费体验&#xff0c;让每一笔支出都化作通往财富之路的基石。 ✨ 泰…

了解LVS,配置LVS

项目一、LVS 1.集群Cluster Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统 LB&#xff1a;负载均衡 HA&#xff1a;高可用 HPC&#xff1a;高性能计算 2.分布式 分布式是将一个请求分成三个部分&#xff0c;按照功能拆分&#xff0c;使用微服…

MySQL的InnoDB的页里面存了些什么 --InnoDB存储梳理(三)

文章目录 创建新表页的信息新增一条数据根据页号找数据信息脚本代码py_innodb_page_info根据地址计算页号根据页号计算起始地址 主要介绍表空间索引页里面有哪些内容&#xff0c;数据在表空间文件里面是怎么组织的 创建新表页的信息 CREATE TABLE test8 (id bigint(20) NOT N…

Nginx Web UI 部署

目录 1. 安装Docker 2. 拉取镜像 3. 启动程序 4. 访问测试 1. 安装Docker 准备一台虚拟机&#xff0c;关闭防火墙和selinu&#xff0c;进行时间同步 下载docker并配置加速器 # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persisten…

8B 端侧小模型 | 能力全面对标GPT-4V!单图、多图、视频理解端侧三冠王,这个国产AI开源项目火爆全网

这两天&#xff0c; Github上一个 国产开源AI 项目杀疯了&#xff01;一开源就登上了 Github Trending 榜前列&#xff0c;一天就获得将近600 star。 这个项目就是国内大模型四小龙之一面壁智能最新大打造的面壁「小钢炮」 MiniCPM-V 2.6 。它再次刷新端侧多模态天花板&#xf…

Cobalt Strike 4.8 用户指南-第一节-Cobalt Strike介绍及安装

一、欢迎使用Cobalt Strike Cobalt Strike 是一个用于对手模拟和红队行动的平台。用于执行有针对性的攻击并模拟高级威胁行为者的后渗透行动。本节介绍 Cobalt Strike 功能集支持的攻击过程。本手册的其余部分将详细讨论了这些功能。 # 概述 图中的 Intrumentation & Tel…

数据重塑之数据去重

下面内容摘录自&#xff1a; 4章7节&#xff1a;用R做数据重塑&#xff0c;数据去重和数据的匹配-CSDN博客文章浏览阅读23次。数据重塑是数据分析和数据清洗中的重要步骤&#xff0c;其中包括数据去重和数据匹配。理解这两个概念以及它们的实现方法对于有效处理和分析数据至关重…

告别转换难题,四款PDF转CAD工具分享

CAD很难搞&#xff0c;将PDF转换为CAD更难搞&#xff0c;想要快速且完整的将PDF文件转换为CAD&#xff0c;自然不是靠一点点的复制重做&#xff0c;直接用PDF转CAD工具就能搞定。那用什么工具呢&#xff1f;我这就给你们捋捋几个神器是怎么帮我们搞定这个难题的。 1.PDF365在线…