重温SpringBoot(一)
啊妈的.老子买的 Spring3.x企业应用实战开发白买了(我真是个傻逼)。
Spring都tm出到5了,SpringBoot都快到3了 嗐搁这Spring3呢?
学SpringBoot参考了 <SpringBoot4实战第四版>(虽然里面有很多我暂时还用不上,比如Groovy,等日后搞懂了再来弄), 以及<Spring2.x深入浅出>
想起18年年末那时刚开始学SpringBoot,以为是什么特别复杂高难的东西。其实本质上SpringBoot就是以注解为主 能自动完成各项配置的Spring项目:
比如内嵌tomcat,自动完成bean的装配, 配置MVC的 DispatcherServlet等等...
(一)
初始化ioc容器时用到的相关注解:
@SpringBootApplication
这个注解其实是三个注解的合体, 分别是 @Configuration @ComponentScan @EnableAutoConfiguration
先粗略讲一下 @Configuration,这个注解会声明当前类是一个配置文件, ioc会根据这个配置文件去装配各种bean。
举个例子:
@Configuration
public class TestConfig{
@Bean(name = " user ") //@Bean代表 该方法返回的对象将被装配进ioc容器里
public User initUser(){
User user = new User();
user.setName(“Admin”);
return user;
}
}
之后加载上下文,构建ioc容器,然后调用getBean()就能取到Bean了。
public static void main(String args[]){
ApplicationContext ctx = new AnnotationConfigApplicationContext(TestConfig.class);
User user = ctx.getBean(User.class);
System.out.print(user.getName()); //控制台输出Admin
}
参考自(SpringBoot2.x深入浅出的3.1)
另外扩展一下,如果用getBean获取两次同一个Bean,你会发现返回的是同一个对象。
这是因为Spring里默认Bean是单例模式(即 scope为 singleton),某个类的实例只有一个(比如 @Autowired 的 Service, Mapper等)。
之前被这个说法弄混淆了(吐血), 不如说是 Ioc容器初始化时被装配进去的Bean,只有一个实例。
所以单例模式是安全的吗?
@ComponentScan
启用扫描组件!
Spring的@ComponentScan:启用组件扫描,
这样你写的Controller进行注解的类才会被装进容器里。
注意: 这个注解!只能扫描当前包及子包!

浙公网安备 33010602011771号