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 {
    @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");
    }
}

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落落落sss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值