Spring底层原理之bean的加载方式四 @import 注解

发布于:2024-07-04 ⋅ 阅读:(12) ⋅ 点赞:(0)

bean的加载方式四 @import

第四种bean的导入方式

是import导入的方式

在配置类上面加上注解就行

package com.bigdata1421.config;

import com.bigdata1421.bean.Dog;
import org.springframework.context.annotation.Import;

@Import(Dog.class)
public class SpringConfig4 {

}

这个注解只能用一次

只能写一行

我们在APP类里面启动一下

package com.bigdata1421.bean.app;

import com.bigdata1421.bean.Dog;
import com.bigdata1421.config.SpringConfig3;
import com.bigdata1421.config.SpringConfig32;
import com.bigdata1421.config.SpringConfig4;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App32 {

    public static void main(String[] args) {
        ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig4.class);
        String[] arr = ctx.getBeanDefinitionNames();
        for (String s : arr) {
            System.out.println(s);
        }
        System.out.println();
        System.out.println(ctx.getBean(Dog.class));
    }
}

首先我们是创建bean实例类ApplicationContext类的对象

导入刚刚写的配置类的类加载器

我们用这个对象去调用里面的方法获取当前配置类里面的所有bean

把名称返回到一个字符串数组里面

我们用增强for循环遍历这个数组打印

输出在控制台

发现我们用Import注解导入的bean被成功加载

我们也可以获取一下这个对象

成功打印

如果找不到bean的话 就会报错

我们用注解创建的bean是全路径类名

我们注意我们的这边

并没有把Dog类标记为一个bean

用@Component注解及其衍生注解

这就代表我们可以进行有效的解耦

spring倡导无入侵式编程理念

Spring 框架倡导的无入侵式编程理念指的是,在使用 Spring 框架开发应用程序时,你的业务逻辑代码不需要依赖于 Spring 特定的类或接口,也不需要继承 Spring 的特定类。换句话说,你可以在不改变代码结构的情况下,将 Spring 框架集成到现有的应用中,并且可以很容易地移植到其他环境中,而不会受到 Spring 框架的限制或影响。

具体来说,Spring 框架通过依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)等技术,实现了控制反转(IoC)和面向切面编程(AOP),使得应用程序中的组件(如业务逻辑、数据访问等)能够独立于框架进行开发和测试。这种方式使得代码的可维护性和扩展性大大提高,同时降低了框架引入和替换的风险和成本。

总之,Spring 的无入侵式编程理念使得开发者可以更加专注于业务逻辑的实现,而不必过多关注框架的具体实现细节,从而提高了开发效率和代码质量。

只需要一个注解就行 十分的方便

小结

这是框架内部经常用到的一种初始化bean的方式

这也是很多spring整合其他技术时的一种手段

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482