当前位置: 首页 > news >正文

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

目录

修改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 {@Overridepublic 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 {@Overridepublic 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.Driverurl: jdbc:mysql://localhost:3306/mysql_day2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourceboot: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: alwaysenabled: 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 {@Testpublic 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 {@Testpublic 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 {@Overridepublic void save() {log.info("BookService save");// System.out.println("service");}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构——循环队列
  • C#高级:通过一个遍历实体的小案例去理解反射(基础版)
  • Python之字符串的创建、索引和分片
  • 深入理解 GO 语言并发
  • 双配置视觉 Transformer 在多模态中的突破 !
  • Linux服务器:Samba配置
  • Java - 正则表达式
  • Memecoin的火爆与AMM在Solana上的主导地位
  • 嵌入式八股-C++面试30题(20240814)
  • Hibernate Session在项目中的创建方式
  • Nginx+Tomcat 群集
  • python发送外部请求
  • element 动态设置el-table 高度
  • Unity脚本一键修改所有预制体
  • Spring之@ComponentScan注解
  • 77. Combinations
  • CSS相对定位
  • CSS中外联样式表代表的含义
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • java8 Stream Pipelines 浅析
  • JS学习笔记——闭包
  • MaxCompute访问TableStore(OTS) 数据
  • MQ框架的比较
  • Otto开发初探——微服务依赖管理新利器
  • PHP那些事儿
  • Promise面试题,控制异步流程
  • Python语法速览与机器学习开发环境搭建
  • 爱情 北京女病人
  • 驱动程序原理
  • 让你的分享飞起来——极光推出社会化分享组件
  • 日剧·日综资源集合(建议收藏)
  • 应用生命周期终极 DevOps 工具包
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # dbt source dbt source freshness命令详解
  • $.ajax()
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • $NOIp2018$劝退记
  • (27)4.8 习题课
  • (笔记)M1使用hombrew安装qemu
  • (笔试题)合法字符串
  • (编译到47%失败)to be deleted
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (回溯) LeetCode 131. 分割回文串
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (蓝桥杯每日一题)love
  • (四)JPA - JQPL 实现增删改查
  • (算法)N皇后问题
  • (学习日记)2024.01.09
  • (转)jQuery 基础
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net