实习面试:Java达人必知必会(2)

42 阅读3分钟

创建Bean的方式

创建Bean的方式有多种,其中包括:

  1. XML方式:在Spring的配置文件中,通过定义元素来声明Bean。

  2. 注解方式:

    • @Component注解:在类上使用@Component注解来创建Bean,Spring会自动扫描带有此注解的类。需要在Spring配置中开启包扫描功能,可以通过xml或Spring配置类开启。
    • @Configuration注解:在类上使用@Configuration注解,并在其中声明带有@Bean注解的方法来创建Bean。
    • FactoryBean接口:实现FactoryBean接口,并实现getObject()方法返回Bean实例。
    • @Import注解:使用@Import注解导入其他配置类,被导入的配置类中可以声明额外的Bean。示例代码中的配置类SpringConfig使用了@Configuration和@Import注解来导入DogConfig配置类中声明的Bean。

AOP/DI

DI

Spring 的依赖注⼊(Dependency Injection,简称 DI)是指,在⼀个对象创建时,由 Spring 框架动态地将其依赖 的其他对象注⼊到它当中,以解耦对象之间的关系,达到灵活、可维护、可测试的⽬的。

  1. 灵活性:通过依赖注⼊,对象之间的关系不再由程序员⼿动控制,⽽是由 Spring 容器动态地维护,可以灵活 地组合和切换不同的对象实现。
  2. 可测试性:依赖注⼊可以使各个对象之间的依赖关系更加松散,⽅便进⾏单元测试和集成测试。
  3. 可扩展性:依赖注⼊将各个对象之间的依赖关系解耦,⽅便对系统进⾏扩展和升级。
  4. 可维护性:依赖注⼊可以减少重复代码,降低了代码的复杂度,使代码更加易于维护和修改。

AOP

AOP是面向切面编程,或者叫面向方面编程,或者开玩笑地说叫面向方便面编程。在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

实现方法

动态代理(InvocationHandler):
JDK原⽣的实现⽅式,需要被代理的⽬标类必须实现接⼝。因为这个技术要求代 理对象和⽬标对象实现同样的接⼝(兄弟两个拜把⼦模式)。

cglib:通过继承被代理的⽬标类(认⼲爹模式)实现代理,所以不需要⽬标类实现接⼝。 AspectJ(编译阶段 ):本质上是静态代理,将代理逻辑“织⼊”被代理的⽬标类编译得到的字节码⽂件,所以最终效果是动态的。 weaver 就是织⼊器。Spring 只是借⽤了 AspectJ 中的注解。