通过注解方式实现Spring IOC/DI

一,什么是Spring IOC/ID

Spring IOC(控制反转)/DI(依赖注入)是面向对象的一种设计理念,用来降低程序代码之间的耦合度。
IOC/ID的核心是ApplicationContext容器,容器接管了对象的创建。只要类注册在容器中,容器初始化以后就会为所有类创建单例对象,代码中通过getBean(“beanname”)就可以拿到对象。

二,如何通过注解的方式实现spring IOC/ID

1. 创建applicationContext.xml文件,

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.0.xsd
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
      <!--容器扫描指定包目录下的类文件,此处容器扫描com.leon.pojo下的所有类-->
    <context:component-scan base-package="com.leon.pojo"/>
/beans>

2. 在需要创建对象的类中加入标注。根据对象的不同选择标注元件@Compoment,@Repository, @Service, @Controller。如果类中包含引用类型,则引用类型也需要标注为元件,且在引用类型前需要加自动链接@Autowired

@Component
public class User {
    public int userID;
    public String userName;
}
@Component
public class Group {
    private int groupId;
    private int groupName;
    @Autowired
    private User user;
}

@Autowired采用按类型匹配的方式为属性自动装载合适的依赖对象,即容器会查找和属性类型想匹配的Bean组件,并自动为属性注入。
如果到不到相匹配的Bean组件,Spring容器会跑出异常。此时如果依赖不是必须的,为避免抛出异常,可以将required的属性设置为false:

@Autowired(required=false)

如果对类中集合类型的成员变量或方法入参使用@Autowired注解,Spring 会将容器中所有和集合元素类型匹配的Bean组件都注入进来。

@Autowired(required=false)
private List<Job> toDolist;

3. 创建容器对象,调用容器的getBean方法,类型强转以后就可以得到对象。

@Test
public void test1(){
   ApplicationContext app= new ClassPathXmlApplicationContext("applicationContext.xml");
   User user = (User) app.getBean("user");
   Group group= (Group) app.getBean("group");
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值