Spring——注解

在Spring4之后,要使用注解开发,必须要保证aop的包的导入了

使用注解需要导入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">​    ​    <context:annotation-config/></beans>

1、属性的注入

package com.ly.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

//等价于<bean id="user" class="com.ly.pojo.User"/>  在IOC容器中注册
//component 组件
@Component
public class User {
    //相当于<property name="name" value="凌云"/>
    @Value("凌云")
    public String name ;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2、衍生的注解

@Component有几个衍生的注解,我们在web开发中,会按照mvc三层架构!

  • dao【@Repository】

  • service【@Service】

  • controller【@Controller】

    这四个注解功能都是一样的,都是代表将某个类注册到Spring中装配!

3、自动装配

@Autowired:自动装配通过类型,名字
    如果Autowired不能唯一自动的装配上属性,则需要Qualifier(value="")
@Nullable  字段标记了这个注释,说明这个字段可以为null
@Resource :自动装配通过名字类型

4、作用域

package com.ly.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

//等价于<bean id="user" class="com.ly.pojo.User"/>  在IOC容器中注册
//component 组件
@Component
@Scope("singleton")
public class User {
    //相当于<property name="name" value="凌云"/>
    @Value("凌云")
    public String name ;

    public void setName(String name) {
        this.name = name;
    }
}

5、小结

xml与注解:

  • xml更加万能,适用于任何场合!维护简单方便

  • 注解不是自己的类使用不了,维护相对复杂!

最佳实践:

  • xml用来管理bean

  • 注解只负责完成属性的注入;

  • 我们在使用的过程中,只需要注意一个问题:要让注解生效,就需要开启注解的支持。

 <!--指定要扫描的包,这个包下的注解就会生效-->
    <context:component-scan base-package="com.ly.pojo"/>
    <context:annotation-config/>



原文地址:https://www.cnblogs.com/moxihuishou/p/15163887.html