Spring 注解编程IOC

Bean 注册

注册Bean的常用注解有@Component、@Service、@Controller、@Repository,通过扫描包的方式对这些注解进行解析注册Bean。

注解ApplicationContext:AnnotationConfigApplicationContext

常用注解

@Configuration
声明Bean Difinition的配置文件,相当于一个xml文件

@Bean
声明Bean的组件

@Configuration
public class CustomConfig {
    @Bean
    public Person person() {
        return new Person();
    }
}

相当于xml bean内容

<beans>
    <bean id="person" class="top.felixfly.entity.Person"/>
</beans>

bean的名称默认为方法名称,也可以通过@Bean(value=“person”)或者@Bean(“person”)进行指定

@ComponentScan
指定扫描路径

@Configuration
@ComponentScan("top.felixfly.spring.annotation")
public class ScanConfiguration {
}

相当于xml component-scan

<beans>
    <context:component-scan package="top.felixfly.spring.annotation"/>
</beans>

@ComponentScans
多个扫描路径,值为ComponentScan的数组,1.8以后可以用多个@ComponentScan代替此注解

@Scope
指定Bean的作用域,默认为singleton

  • singleton org.springframework.beans.factory.config.ConfigurableBeanFactory#SCOPE_SINGLETON
  • prototype org.springframework.beans.factory.config.ConfigurableBeanFactory#SCOPE_PROTOTYPE
  • request org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST
  • session org.springframework.web.context.WebApplicationContext#SCOPE_SESSION
@Configuration
public class CustomConfig {
    @Bean
    @Scope("singleton")
    public Person person() {
        return new Person();
    }
}

相当于xml中bean中scope属性

<beans>
    <bean id="person" class="top.felixfly.entity.Person" scope="singleton"/>
</beans>

@Lazy
懒加载,针对singleton Bean进行懒加载,默认情况下单实例Bean直接加载

@Configuration
public class CustomConfig {
    @Bean
    @Lazy
    public Person person() {
        return new Person();
    }
}

相当于xml中bean的lazy-init属性

<beans>
    <bean id="person" class="top.felixfly.entity.Person" lazy-init="true"/>
</beans>

@DependsOn

依赖关系注解

@Configuration
public class CustomConfig {

    @Bean
    @DependsOn("person")
    public Manager manager(){
        return new Manager();
    }

    @Bean
    public Person person(){
        return new Person();
    }
}

相当于xml中bean的depends-on属性

<beans>
    <bean id="manager" class="top.felixfly.entity.Manager" depends-on="person"/>
</beans>

@Order
Bean的排序,或者说是优先级,两个接口org.springframework.core.Ordered以及org.springframework.core.Priori

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到Spring框架的面试题时,Spring AOP和IOC是两个常见的话题。下面是一些可能的面试问题和答案: 1. 什么是Spring AOP? Spring AOP是一种基于面向切面编程(AOP)的技术,它允许开发人员在应用程序中定义横切关注点,并将它们与应用程序的业务逻辑相分离。通过将这些横切关注点(例如日志记录、事务管理等)从核心业务逻辑中提取出来,可以实现更好的模块化和可维护性。 2. Spring AOP的工作原理是什么? Spring AOP通过使用代理模式在运行时为目标对象动态地创建代理对象来实现横切关注点的功能。当调用目标方法时,代理对象会在执行前、执行后或异常发生时插入相关的横切逻辑。 3. Spring IOC是什么意思? Spring IOC(控制反转)是一种设计模式,它将对象的创建和依赖关系的管理从应用程序代码中解耦出来,交由框架来完成。通过IOC容器,可以通过配置文件或注解方式来定义对象之间的依赖关系,Spring容器负责创建、装配和管理这些对象。 4. Spring IOC的优势是什么? 使用Spring IOC可以实现松耦合的设计,从而提高代码的可维护性和可测试性。它还提供了更好的可扩展性,通过配置文件或注解方式,可以方便地修改对象的依赖关系而无需修改代码。此外,Spring IOC还可以通过依赖注入的方式简化对象之间的协作。 5. Spring AOP和IOC之间有什么关系? Spring AOP是Spring框架的一个重要模块,它通过IOC容器来管理和应用横切关注点。在Spring中,AOP是建立在IOC的基础上的,通过IOC容器的支持,可以方便地在应用程序中应用AOP功能。 请注意,这些问题只是众多可能的面试问题中的一部分,面试官可能会根据他们的需求提出更具体的问题。为了取得良好的面试成绩,建议您深入了解Spring AOP和IOC的概念、工作原理以及在实际项目中的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值