Spring IOC 注解方式使用

上篇通过xml方式使用IOC https://www.cnblogs.com/wangid3/p/14171898.html

快速使用:

1. 在spring4之后,想要使用注解形式,必须得要引入aop的包

 

2. 配置文件中加入一行Context

<?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/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">
</beans>

3. 配置组件扫描:哪个包下的类型使用组合扫描

<!--指定注解扫描包-->
<context:component-scan base-package="com.wangid3"/>

4. 在类上使用注释(上一条包里面类,相当于在apicationContext.xml中写的Bean配置)

Qustion:user 是 name 还是 id? 后面会有体现

 

 5. 使用注释注入属性

1)可以直接在直接名上添加@value("值")

@Component("dog")
public class Dog {
    @Value("wc")
    public String name;
}

2)可以在set方法上添加@value("值");

 

IOC注解详解:

1. @Component
修改一个类,将这个类交给Spring管理 相当于在配置文件当中配置<bean id="" class="">

@Component三个衍生注解
为了更好的进行分层,Spring可以使用其它三个注解,功能类似
目前使用哪一个功能都一样, 后期可能会添加一些属于各自的属性
@Controller  web层
@Service  service层
@Repository  dao层

 2.属性注入:不用被扫描

@Value  设置普通属性值

 @Value("wangid3")
 public String name;

@Autowired  设置对象类型的属性值
直接使用这种方式,是按照类型完全属性注入
不需要在注解上使用id名称

 比如有Spring管理的Dog类

@Component("dog")
public class Dog {
    @Value("旺财")
    public String name;
}

有User类,属性中有对Dog的引用,注入的时候没有使用到 id="dog",是按照对象类型注入的

public class User {
    @Autowired
    private Dog dog;
}

就想要高贵的id实现注入,有两种方式:

1)@Autowired+@Qualifier

class User{   
    @Autowired
    @Qualifier("dog")
    public Dog dog;
}

2) 单独使用@Resource

class User{   
    @Resource
    public Dog dog;
}

XML与注解比较
XML可以适用任何场景 ,结构清晰,维护方便
注解不是自己提供的类使用不了,开发简单方便

可以把XML与注解整合开发

XML管理Bean

注解完成属性注入

posted @ 2020-12-22 13:43  wangid3  阅读(80)  评论(0)    收藏  举报