美文网首页
3. 再谈spring IoC

3. 再谈spring IoC

作者: seacolo | 来源:发表于2018-10-11 09:51 被阅读0次

    IoC实现原理

    反射 : 在运行状态中,根据提供的类的路径或者类名,通过反射来动态的获取该类的所有属性和方法。

    工厂模式 : 把IoC容器当作一个工厂,在配置文件或者注解中给出定义,然后利用反射技术,根据给出的类名生成相应的对象。对象生成的代码及对象之间的依赖关系在配置文件中定义,这样就实现了解耦。

    配置元数据(configuration Metadata)

    1. 基于XML的元数据
    <bean id="..." class="...">
        <!-- 放置bean的协作者以及配置-->
    </bean>
    
    1. 基于注解的配置
    2. 基于Java的配置

    实例化容器

    Spring IoC容器需要在应用启动时进行实例化,在实例化的过程中,IoC容器会从各种外部资源(如本地文件系统,JAVA类路径)加载配置元数据,提供给ApplicationContext构造函数。

    例:从类库经中加载基于XML的配置元数据的例子

    ApplicationContext context = new ClassPathXmlApplicationContext(
                                        new String[] {
                                            "services.xml","daos.xml"
                                        });
    

    注入方式

    1. 基于构造函数
    2. 基于setter

    bean范围

    1. 默认单例
    2. prototype
    3. ...

    ==:bean以及@Bean的理解==

    1. bean:

    一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;

    一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装

    1. @Bean:

    @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名

    @Configuration
    public class AppConfig {
    
        @Bean
        public TransferService transferService() {
            return new TransferServiceImpl();
        }
    
    }
    
    ==================================相当于=================================
    
    <beans>
        <bean id="transferService" class="com.acme.TransferServiceImpl"/>
    </beans>
    

    相关文章

      网友评论

          本文标题:3. 再谈spring IoC

          本文链接:https://www.haomeiwen.com/subject/ezivaftx.html