Springboot(1)

1、SpringBoot特性(第一天)

1.1、依赖管理

父项目依赖管理,把常用的jar包版本都声明好了

如果我们不想用默认的版本,改成自己的需要重写父类的版本

<properties>
   <mysql.version>5.1.43</mysql.version>
</properties>  这样就把父类的覆盖掉了

1.2.如果需要访问主程序外面的包

需要在主程序中加入
@SpringBootApplication(scanBasePackges="com.atguigu")  放大扫描包

主程序中的@SpringBootApplication也就是,

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.atguigu")通过这里指定

组件名字

@Configuration //告诉SpringBoot这是一个配置类==配置文件
public class MyConfig {
    @Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
    public UUU user01(){
        return new UUU("zhangsan",18);
    }

    @Bean("tom") //自定义组件名字
    public Pet tomcatPet(){
        return new Pet("tomcat");
    }
}

主程序遍历组件

public static void main(String[] args) {

        ConfigurableApplicationContext run = SpringApplication.run(Boot05Application.class, args);
        String[] names = run.getBeanDefinitionNames();
        for(String name: names){
            System.out.println(name);
        }
        System.out.println();

    }

Myconfig配置类

@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类==配置文件
public class MyConfig {
    @Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
    public UUU user01(){
        return new UUU("zhangsan",18);
    }

    @Bean("tom")
    public Pet tomcatPet(){
        return new Pet("tomcat");
    }
}
@Configuration(proxyBeanMethods = false)  这个默认为true如果为true的话,那么就去内部看有没有这个组件,有就直接用,而如果是false会直接创建,运行速度会提高。

Application.java

@SpringBootApplication
public class Boot05Application {

    public static void main(String[] args) {
//1、返回我们IOC容器
        ConfigurableApplicationContext run = SpringApplication.run(Boot05Application.class, args);
        //2、查看容器里面的组件
        String[] names = run.getBeanDefinitionNames();
        for(String name: names){
            System.out.println(name);
        }
        //3、从容器中获取组件
        Pet tom01=run.getBean("tom",Pet.class);
        Pet tom02=run.getBean("tom",Pet.class);
        System.out.println("组件"+(tom01==tom02));
        //配置类本身也是一个组件
        MyConfig bean=run.getBean(MyConfig.class);
        System.out.println(bean);
        System.out.println("=============");
        UUU uuu = bean.user01();
        UUU uuu1 = bean.user01();
        System.out.println(uuu==uuu1);  //true  说明拿的都是一个对象,如果上面的改为false那就是false
    }

}

总结

组件依赖就是@Configuration(proxyBeanMethods = true)
1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
2、配置类本身也是组件

@Conditional

@Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类==配置文件
//@ConditionalOnBean(name="tom")
@ConditionalOnMissingBean(name="tom")
public class MyConfig {
    //@ConditionalOnBean(name="tom")//需要满足容器中含有tom组件才会执行下面
    @Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
    public UUU user01(){
        return new UUU("zhangsan",18);
    }

    @Bean("tom")
    public Pet tomcatPet(){
        return new Pet("tomcat");
    }
}

application中进行判断

  boolean tom = run.containsBean("tom");
        System.out.println("容器中是否含有TOM"+tom);
        boolean user01 = run.containsBean("user01");
        System.out.println(user01);
 返回 true  true
/@ConditionalOnBean(name="tom")当容器中含有这个tom组件,必须在之前有的下面的不算
@ConditionalOnMissingBean(name="tom")不含有这个组件
posted @   前来冲分呀!  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示