Spring

Spring|Bean的初始化、作用域

刘启春

BeanDefaintion 保存 Bean 的元信息,是 Bean 的“配料表”。

Bean 初始化的方式:

1、通过构造器除时候( 不可变对象)

public class SimpleMovieLister {

    // the SimpleMovieLister has a dependency on a MovieFinder
    private MovieFinder movieFinder;

    // a constructor so that the Spring container can inject a MovieFinder
    public SimpleMovieLister(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

    // business logic that actually uses the injected MovieFinder is omitted...
}

SpringBoot 启动时实现自动执行

刘启春

摘要:有时启动 springboot 项目后需要执行一些方法初始化,如资源加载、数据准备等,首先不能放在 main 方法中 SpringApplication.run()之前,因为此时 bean 还未初始化,除非你不使用 bean,当然也不能放其后,因为 run 方法执行后启动 tomcat 会阻塞在端口监听,run 方法后的代码不会执行。

Spring|IOC、AOP总结

刘启春

Spring 两个核心就是 IOC(Invest of Control)容器和面向切面编程 AOP。

IOC 是 spring 的 bean 容器,IOC 帮我们项目管理的 bean 的创建和依赖管理,在使用的时候我们只需要使用 xml 或注解指明依赖的对象,剩下的 IOC 会帮我管理。IOC 实现的核心是依赖注入,在初始化 bean 时往往一个对象依赖另一个对象,spring 帮我自动创建依赖对象并把它注入到对象中。IOC 中的对象可以是单例或多例的,但多数是单例的,例如@Service 和@Controller 注解就是单例的对象。通过在 IOC 提前创建好对象,提高了程序的运行速度。

Spring 的另一个核心是 AOP 切面编程,在程序的开发过程中,难免会有大量重复的代码,例如事务的开启和关闭,打印日志等,我们可以把重复的代码提取出来,利用 AOP 技术复用这些代码,这些操作通常在方法执行前可以执行或执行后可以执行。AOP 实现是基于就动态代理的设计思想来实现的,基于 JDK Proxy 或 cglib,选择的依据是对象(代理的方法)是否是实现接口的,对象实现了接口就用 JDK 动态代理,否则就是用 cglib 通过继承的方式实现代理。

SpringMVC|Controller 中使用 Swagger 注解的正确姿势

刘启春

在使用 swagger 的时候有些注解没有正确使用会导致测试时不方便,导致测试时连数据都传入不到后端,或者 swagger 界面的接口显示了错误的输入组件,这些都是 swagger 的 Comtroller 注解使用的一些细节没有注意到,这篇文章主要针对这方面的注解进行总结,或许能解决使用 swagger 的一些小诟病。