Spring注解开发

Spring4之后,要是用注解开发,必须导入aop的包!!!


1.导入依赖:

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>5.3.10</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.10</version>
        </dependency>

    </dependencies>

Spring注解开发


2.开启注解支持:

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <!--扫描这个包,让它包下的注解生效-->
    <context:component-scan base-package="com.xxx"/>

    <context:annotation-config/>

</beans>

3.注解说明:

1.bean:
@Component :组件,放在类上,说明这个类被Spring管理了,就是bean。
//相当于<bean id="xxx" class="com.xxx"/>

2.属性如何注入:
@Value("xx")
//相当于<property name="user" value="xx"/>

3.衍生的注解:
@Component有几个衍生注解,我们在web开发中,会按照MVC三层架构分层
    dao:@Repository
    service:@Service
    controller:@Controller
这四个注解功能都是一样的,都是将某个类注册到Spring容器中,装配Bean。

4.自动装配:

@Autowired:自动装配通过byType,byName
            如果Autowired不能唯一自动装配属性需要通过
            @Qyalifier(value="xxx")
@Nullable 字段标记了这个注解,说明这个字段可以为null
@Resource 自动装配默认通过byName,然后是byType

@Resource和@Autowired的区别:
(1)都是用来自动装配的,都可以放在属性字段上。
(2)@Autowired通过byType的方式实现,而且必须要求这个对象存在。
(3)@Resource默认通过byName的方式实现,如果找不到名字,则通过byType实现
          如果都找不到,就报错。
(4)执行顺序不同@Autowired自动装配通过byType,@Resource 自动装配默认通过                       byName。

5.作用域:
@Scope("singleton")
//相当于<bean id="xx" class="com.xxx.." scope="singleton"/>



xml与注解:
xml:更加万能,适用于任何场合,维护方便;
注解:不是自己的类适用不了,维护相对复杂。


最佳实践:
xml用来管理bean;
注解用来负责属性的注入。

注意:必须让注解生效就必须开启注解支持!!!(详细见第2步)

上一篇:linux下配置环境变量方式


下一篇:windows + yolov4目标检测 + BM(SGM/SGBM)+ cuda实时运行 +双目定位工程实践代码