这是官网图,主程序包及其下面所有子包里面的组件都会被默认扫描进来。直接看图片结构,体会体会什么叫一目了然
当然了还会给我们自动配置好springmvc常用功能,配置好web常用的功能,比如字符编码(不能识别中文),配好Tomcat,是我想要的效果(坏笑)
spring容器添加组件,写xml配置,想细看吗,不想!那就跟我去看springboot是怎么实现的我们观察粗略的看到了
@Configuration 作用是告诉Springboot这是一个配置类,注意它是.java文件 @bean 方法名会作为组件的id,return 返回的实例就是组件在容器中的实例
当然这图里还有细节,比如proxyBeanMethods它为true和false的区别?)(目前先了解粗浅的就够用了)
那么,重点来了,也是我喜欢的一项活:观察容器里现在有哪些组件
在主程序里这么写:通过IOC容器查看容器里的组件
run.getBeanDefinitionNames();//获取所有,还要循环遍历输出
当然也可以通过名字获取单个组件
run.getBean("tom",Pet.class)//获取tom这个组件,值得注意的是本来说好的
方法名是组件id,@Bean('tom')可以起别名
在图中可以看到,获取了俩次tom这个组件,他俩是一样的。也就是默认单实例
当然还可以批量注册组件用@import,条件装配组件用@ConditionalBean
比如,pet是user类里的一个属性,那么pet类要是没有注册到容器的话,我们得user类也不能注册到容器里怎么写·呢 答案是:@ConditionalBean
User zhangsan=new User('zhangsan',18)
zhangsan.setPet(tomcatPet());
额外的冷知识:
lombok:我理解就是来写javaBean的神器
@Data 帮你写set,get方法的 @NoArgsConstructor 帮你写无参构造器 @AllArgsConstructor 帮你写全参构造器 @ToString 帮你重写tostring



