Spring的自动装配及注解开发(“最易懂得Spring学习”)(三)

简介: 八、使用注解开发1. bean2.属性如何注入3.衍生的注解4. 自动装配5.作用域6.小结

八、使用注解开发


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

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc/artifactId>
    <version>5.3.9</version>
</dependency>

使用注解要导入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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd">
    <!--开启自动注解的支持-->
    <context:annotation-config/>
</beans>

1. bean

// 等价于   <bean id="user" class="com.hxl.pojo.User"/>
//@Component 组件放在类上,说明这个类被Spring管理了,这就是bean
@Component
public class User {
    public String name = "王木木";
}

2.属性如何注入

// 等价于   <bean id="user" class="com.hxl.pojo.User"/>
//@Component 组件
@Component
public class User {
    //简单的可以用这个,复杂的还是用配置好
    //相当于<property name="name" value="王木木"/>
    //注解在set方法上也是可以的
    @Value("王木木")
    public String name;
    public void setName(String name) {
        this.name = name;
    }
}

3.衍生的注解


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


  • dao【@Repository】


  • service【@Service】


  • controller【@Controller】


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


4. 自动装配


  • @Autowired:自动装配通过类型,名字。如果Autowired不能唯一自动装配上属性,则需要通过@Qualifier(value=“xxx”)


  • @Nullable:字段标记了这个注解,说明这个字段可以为null


  • @Resource:自动装配通过名字,类型


5.作用域


单例模式,原型模式。

@Component
//这个就是单例模式
@Scope("singleton")
public class User {
    @Value("王木木")
    public String name;
    public void setName(String name) {
        this.name = name;
    }

6.小结


  • xml与注解


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


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


  • 最佳实践


  • xml用来管理bean


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


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


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


相关文章
|
1天前
|
Java Spring
Spring 使用注解注入失败,调用内容时提示空指针
Spring 使用注解注入失败,调用内容时提示空指针
7 0
|
4天前
|
开发框架 Java 测试技术
Spring Boot 项目中使用 `@Autowired` 注解,合理吗?
Spring Boot 项目中使用 `@Autowired` 注解,合理吗?
77 1
Spring Boot 项目中使用 `@Autowired` 注解,合理吗?
|
16天前
|
监控 安全 Java
Spring注解之恋:@Async和@Transactional的双重奏
Spring注解之恋:@Async和@Transactional的双重奏
17 0
|
16天前
|
监控 Java 调度
Spring中的任务调度:探索@Scheduled和@Schedules注解的威力
Spring中的任务调度:探索@Scheduled和@Schedules注解的威力
26 0
|
16天前
|
XML Java 数据库连接
无痛事务管理:Spring中的@Transactional和相关注解完全解析
无痛事务管理:Spring中的@Transactional和相关注解完全解析
43 0
|
16天前
|
缓存 Java 数据库
优化您的Spring应用程序:缓存注解的精要指南
优化您的Spring应用程序:缓存注解的精要指南
24 0
|
16天前
|
安全 Java 调度
Spring中的多线程魔法:探索@Async注解的妙用
Spring中的多线程魔法:探索@Async注解的妙用
31 0
|
16天前
|
Java 数据库 开发者
Spring注解大揭秘:@Component、@Service、@Repository详解
Spring注解大揭秘:@Component、@Service、@Repository详解
11 0
|
19天前
|
Java 调度 开发工具
SpringCloud【微服务架构进化论、微服务的拆分规范和原则、为什么选择Spring Cloud、什么是服务治理 】(一)-全面详解(学习总结---从入门到深化)
SpringCloud【微服务架构进化论、微服务的拆分规范和原则、为什么选择Spring Cloud、什么是服务治理 】(一)-全面详解(学习总结---从入门到深化)
67 0
|
20天前
|
Java Spring 容器
Spring5源码(42)-@Transactional注解的声明式事物事物标签提取
Spring5源码(42)-@Transactional注解的声明式事物事物标签提取
24 0

相关产品

  • 云迁移中心