spring学习笔记之IOC

IoC ( Inverse of Control),控制反转,将对象的创建权反转给Spring

spring IOC的快速入门

编写pom文件

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>RELEASE</version>
        </dependency>
    </dependencies>

编写接口UserService

public interface UserService {
    public void say();
}

编写实现类UserServiceImpl

public class UserServiceImpl implements UserService{

    public void say() {
        System.out.println("hello spring");
    }
}

编写配置文件

在”applicationContext.xml中添加如下代码

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="userService" class="com.hw.server.impl.UserServiceImpl"/>

</beans>

编写测试代码

    @Test
    public void testBean(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 通过工厂获得类:
        UserService userService = (UserService) applicationContext.getBean("userService");
        userService.say();
    }

Spring框架中的工厂

ApplicationContext接口

使用ApplicationContext工厂的接口,使用该接口可以获取到具体的Bean对象该接口下有两个具体的实现类

* ClassPathXmlApplicationContext            -- 加载类路径下的Spring配置文件
* FileSystemXmlApplicationContext           -- 加载本地磁盘下的Spring配置文件

BeanFactory工厂(是Spring框架早期的创建Bean对象的工厂接口)

使用BeanFactory接口也可以获取到Bean对象

public void testBean(){
                BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
                UserService us = (UserService) factory.getBean("us");
                us.sayHello();
            }

BeanFactory和ApplicationContext的区别:

* BeanFactory               -- BeanFactory采取延迟加载,第一次getBean时才会初始化Bean
* ApplicationContext        -- 在加载applicationContext.xml时候就会创建具体的Bean对象的实例,还提供了一些其他的功能
        * 事件传递
        * Bean自动装配
        * 各种不同应用层的Context实现

bean标签的属性

# id属性和name属性
    * id        -- 给Bean起的名字,在约束中采用ID的约束,唯一,不能出现特殊字符
    * name      -- 给Bean起的名字,没有采用ID的约束,可以出现特殊字符
    * 如果没有id,name可以当id来使用,id和name只能出现一个
# class
    * Bean对象的全路径
# scope         -- scope属性代表Bean的作用范围
    * singleton         -- 单例(默认值)
    * prototype         -- 多例
    * request           -- 应用在Web项目中,每次HTTP请求都会创建一个新的Bean
    * session           -- 应用在Web项目中,同一个HTTP Session 共享一个Bean
    * globalsession     -- 应用在Web项目中,多服务器间的session
# init-method       -- 当bean被载入到容器的时候调用init-method属性指定的方法
# destroy-method    -- 当bean从容器中删除的时候调用destroy-method属性指定的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值