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;
};
}