LOADING

加载过慢请开启缓存 浏览器默认开启

SpringBoot 4

SpringBoot

网盘

SpringBoot 3

Spring Boot 中文文档 (springdoc.cn)

Bean 对象管理

IOC容器

背景 : 代码书写现状(耦合度偏高),每次更换一个实现类,就可能要重新编译整个工程。

/*业务层实现*/
public class BookServiceImpl implements BookService {
    private BookDao book = new BookDaoImpl();  // 创建对象写死在代码中

    public void save() {
        bookDao.save();
    }
}
/*数据层实现*/
public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("book dao save ...");
    }
}

解决方案 :使用对象时,在程序中不要主动的使用new产生对象,转换为由外部提供对象。

IoC(Inversion of Conteol)控制反转:对象的创建控制权有程序转移到外部,实现解耦。

Spring技术提供了一个容器对IoC思想进行实现。

DI(Dependency Injection)依赖注入:在容器中建立bean与bean之间的依赖关系的过程。

Bean扫描

@ComponentScan注解是Spring框架中的一个注解,用于指定Spring在扫描组件时的基本包路径。当Spring Boot应用程序启动时,会自动扫描指定的包路径下的组件,例如标记了@Component、@Service、@Controller等注解的类,将其实例化并纳入Spring容器管理。

@ComponentScan注解通常用于Spring Boot的主配置类(通常是一个带有@SpringBootApplication注解的类)上,用于指定Spring应该扫描的组件所在的包路径。在@ComponentScan注解中,可以通过basePackages属性指定要扫描的包路径,也可以使用value属性来指定。

示例:

@SpringBootApplication
@ComponentScan(basePackages = {"com.example.app.components"})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Bean注册

如果要注册的bean对象来自于第三方(不是自定义的),是无法用 @Component 及衍生注解声明bean的

  • @Bean:如果要注册第三方bean,建议在配置类中集中注册

  • @Import:导入配置类,导入ImportSelector接口实现类。