SpringBoot基础入门(一)xxxApplication(主程序 有关知识)学习笔记

这篇博客是SpringBoot基础入门的学习笔记,主要探讨xxxApplication作为主程序的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot基础入门(一)xxxApplication(主程序 有关知识)学习笔记

下面展示一些 xxxApplication

有关xxxApplication的代码
....
//SpringBootApplication(scanBasePackages = "com.example") 改变扫描路径 主程序同级或下的包自动扫描
//这是一个SpringBoot的主程序


@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
//    1.返回我们的IOC容器 run接收
        ConfigurableApplicationContext run= SpringApplication.run(StudentApplication.class, args);

//    2.查看我们的组件
        String[] names = run.getBeanDefinitionNames();
        for (String name:names){
            System.out.println(name);
        }
//        3.从容器中获取组件
        Pet TestTomcatPet01 = run.getBean("tomcatPet",Pet.class);

        Pet TestTomcatPet02 = run.getBean("tomcatPet",Pet.class);

        System.out.println("组件:"+(TestTomcatPet01 ==TestTomcatPet02));
//        4.
        MyConfig MyConfig1 = run.getBean(MyConfig.class);
        System.out.println(MyConfig1);
//      如果Configuration(proxyBeanMethods = true)代理对象调用方法,Spring Boot总会检查是否这个组件存在
//      保持组件单实例
        User users = MyConfig1.user();
        User users2 = MyConfig1.user();
        System.out.println(users == users2);

        User user01 = run.getBean("user01",User.class);
        Pet tom = run.getBean("tom",Pet.class);
        System.out.println("用户宠物:"+(user01.getPet() == tom));

//        5.获取组件
        String[]  beanNamesForType= run.getBeanNamesForType(User.class);
        System.out.println("===========");
        for (String s : beanNamesForType) {
            System.out.println(s);
        }

        DBHelper bean1 = run.getBean(DBHelper.class);
        System.out.println(bean1);
    }
}

下面展示一些 Config

有关Config部分的学习内容
package com.example.conf;

import ch.qos.logback.classic.db.DBHelper;
import com.example.bean.Pet;
import com.example.bean.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;


//1.配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
//2.配置类本身也是组件
//3.proxyBeanMethods:代理Bean的方法
//  Full(proxyBeanMethods = true)  全模式  每次外界启动都要检查组件在其中是否有false反之启动更快
//  Lite(proxyBeanMethods = false) 轻量级模式  每次调用都会产生一个新的对象
//用于解决组件依赖
@Configuration(proxyBeanMethods = true)   // 告诉SpringBoot这是一个配置类 == 配置文件

//@Import({User.class, DBHelper.class})
//      给容器中自动创造出这两个类型的组件
@Import({User.class})  //可以引入组件xxx.class
public class MyConfig {

//    外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实列对象
    public User user(){
        User zhangsna = new User("zhangsan","18");
//      user组件依赖了Pet组件(proxyBeanMethods = false 解决了因为用户的宠物不是Pet的宠物)
        zhangsna.setPet(tomcatPet());
        return zhangsna;
    }


    @Bean("Tomccc")  //给组件取名
    public Pet tomcatPet(){
        return new Pet("tomacat");
    }
}

下面展示一些 有关类

User类和Pet类
//Pet类
package com.example.bean;

import lombok.Data;

@Data
public class Pet {
    private String name;

    public Pet(){
    }

    public Pet(String name){
        this.name = name;
    }
    //初学SpringBoot因为使用lombok插件自动生成了getting、setting和toString等方法赖得重写toString方法只能这样表示
    public String Tostring(){
        return "Pet{"+
                "name = '"+ name + '\''+
                "}";
    }
}

//User类
package com.example.bean;


import lombok.Data;

@Data
public class User {
    private String name;
    private String age;
    private Pet pet;
    public User(String name,String age){
        this.name = name;
        this.age =age;
    }

    public String ToName(){
      return "name:" + name + "age" + age;
    };
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值