Spring 注解实现 IOC、DI、Bean 的作用域和生命周期

Spring 基于注解控制反转(IOC)

一、创建实体类

@Component("iocBean")
public class IOCBean {
	...
}

二、创建 Spring 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       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
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 告知 spring 创建容器时要扫描的包 -->
    <context:component-scan base-package="chu.yi.bo"/>
</beans>

三、IOC 相关注解

      @Component 注解表示将类实例的创建、销毁交由 Spring 管理。该注解的 value 属性用于指定类实例的唯一 id。@Controller、@Service、@Repository 三个注解与 @Component 功能完全一样,只是根据语义的不同 @Controller 用于表现层,@Service 用于业务层,@Repository 用于持久层。

Spring 基于注解依赖注入(DI)

一、创建实体类

@Component("diBean")
public class DIBean {
	...
}
@Component("iocBean")
public class IOCBean {
    @Autowired
    DIBean diBean;
}

二、创建 Spring 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       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
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 告知 spring 创建容器时要扫描的包 -->
    <context:component-scan base-package="chu.yi.bo"/>
</beans>

三、@Autowired 注解

      @Autowired 注解用于属性注入,该注解会根据属性类型自动注入。当有多个类型匹配时,将属性名作为 id 在 Spring 容器中查找,如果找不到会报错。当使用注解进行依赖注入并且注解作用于属性上时,属性的 Set 方法可以省略(如上)。注解也可以作用于属性的 Set 方法上,如下:

@Component("iocBean")
public class IOCBean {
    DIBean diBean;

    @Autowired
    public void setDiBean(DIBean diBean) {
        this.diBean = diBean;
    }
}

四、@Qualifier 注解

      @Qualifie 注解使属性注入在根据类型的基础上再按照 Bean 的 id 进行注入,该注解用于属性注入时不能单独使用,需要和 @Autowire 注解一起使用。该注解用于方法参数注入时可以单独使用。该注解的 value 属性用于指定 Bean 的 id(value = “diBean” 可以简写为 “diBean”)。

@Component("iocBean")
public class IOCBean {
    @Autowired
    @Qualifier("diBean")
    DIBean diBean;
}

五、@Resource 注解

      @Resource 注解使属性注入按照 Bean 的 id 进行属性注入。该注解的 name 属性用于指定 Bean 的 id。

@Component("iocBean")
public class IOCBean {
    @Resource(name = "diBean")
    DIBean diBean;
}

六、@Value 注解

      @Value 注解用于注入基本数据类型和 String 类型的属性。该注解的 value 属性用于指定属性值。

@Component("iocBean")
public class IOCBean {
    @Value("Hello")
    String str;
    @Value("123")
    Integer num;
}

作用域注解和周期方法注解

注解说明
@Scope用于指定 Bean 的作用范围,value 属性的属性值决定具体的作用范围。取值:singleton、prototype、request、session、globalsession
@PostConstruct用于指定初始化方法
@PreDestroy用于指定销毁方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值