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")不含有这个组件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!