重温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进行注解的类才会被装进容器里。 
注意: 这个注解!只能扫描当前包及子包!

posted @ 2020-04-22 18:23  赤鱿  阅读(126)  评论(0)    收藏  举报