SpringBoot学习随记(二)

SpringBoot是一个很优秀的轻量化开发框架,它把开发者从重复繁杂的配置中拯救出来,让人们专注于应用层的开发,和逻辑代码的编写。最为一个初学者,我试着写了一个项目,因为之前有写过ssm的经验,很快框架就搭好了。

如图:

SpringBoot学习随记(二)

 

 

 

 

 

 

 

 

 

项目是学长公司的一个结构化服务器,功能暂时不提,分包就是springboot的常用分包。config包中是所有springboot在运行时需要加载的bean目录,controll是控制层代码,entity是数据库的映射类。属性ssm这些都应该懂,但是springboot中有些特殊的配置方式,我要记下来,便于以后翻看。

关于bean的加载,spring中bean的加载是通过xml配置完成的,原理就是spring通过xmlbeanfactory去解析xml中的bean节点,完成对象的创建,放入对象池中(说起来很简单,过程特别复杂),但是在springboot中一切都通过注解去完成

如图:

SpringBoot学习随记(二)

 

 

 

 

 

 

 

 

 

 

用过安卓dagger2框架的是不是很熟悉,在dagger中项目依赖也是通过这个方式用注解创建全局可以使用的对象,springboot中bean对象也是在运行时创建,生命周期同application相同,全局都可以使用这个对象,使用方法



@Component
public class SpringUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
    }

    //获取applicationContext
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    //通过name获取 Bean.
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    //通过class获取Bean.
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }

    //通过name,以及Clazz返回指定的Bean
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }

}

@Compant注解去声明一个组件,组件在项目运行时运行,初始化方法,在其他需要用到bean的地方调用。

 private HttpUtils(){
        apiService = (ApiService) SpringUtil.getBean("ApiService");
    }

总结一下:在springboot中config的作用就是去声明bean对象,bean对象在项目运行时被预加载,并创建对象,想要获取被实例化的bean需要用Application的实例去获取,大致就是这样。明天去看看原理。最近也在看spring的源码书,希望能坚持下来。