Spring中的注解

Spring的配置

  1. spring 2.5前==xml

  2. spring 2.5后==xml+annotation

  3. spring 3.0后==annotation+JavaConfig配置类

注解:

1.注入类

替换:<bean id="" class=""></bean>

位置:类

语法:@Component(value="注入容器中的id,如果省略id为类名且首字母小写,value属性名称可以省略")

eg:

<bean id="user" class="com.apesource.包.User"></bean>

                                     | |等价于| |

@Component
Class User{}


注意:不能单独使用,必须配合扫描

<context:component-scan base-package=""></context:component-scan>

@Repository=====>注入数据访问层

@Service========>注入业务层

@Controller=====>注入控制层

以上三个注解与@Component功能语法一致

2.注入基本数据类型

含义:注入基本数据

替换:<property></property>

修饰:成员变量或对应的set方法

语法:@Value("数据内容")

           @Value("${key}")

注意:如果需要动态获取则需要指定加载文件

<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>


@Autowired

语法:@Autowired(required = "true-默认、false、是否必须进行装配")

修饰:成员变量或对应的set方法

含义:按照通过set方法进行“类型装配”,set方法可以省略

注意:

        1.默认是按照类型装配且同set方法

        2.若容器中有一个类型可以与之匹配则装配成功,若没有一个类型可以匹配则报错         NoSuchBeanDefinitionException

        3.若容器中有多个类型可以与之匹配,则自动切换为按照名称装配,若名称没有对应,则报错         NoUniqueBeanDefinitionException

        

3.其他注解

@Primary
含义:首选项,当类型冲突的情况下,此注解修饰的类被列为首选(备胎扶正)
修饰:类
注意:不能单独使用,必须与@Component....联合使用


@Qualifier(value="名称")
含义:按照名称装配
修饰:成员变量
注意:不能单独使用,必须与@Autowired联合使用


@Resource(name="名称")
含义:按照名称装配
修饰:成员变量
注意:单独使用


@Scope
含义:配置类的作用域
修饰:类
注意:不能单独使用,必须与@Component....联合使用
@Scope("prototype")
@Scope("singleton")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)

@PostConstruct:初始化,修饰方法 替换init-method
@PreDestroy:销毁,修饰方法 替换destory-method

 4.spring中的新注解

@Configuration

作用:指定当前类是一个配置类

细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。


@ComponentScan

作用:用于通过注解指定spring在创建容器时要扫描的包

属性: value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。 我们使用此注解就等同于在xml中配置了: <context:component-scan base-package="com . apesource"></context: component-scan>


@Bean

作用:用于把当前方法的返回值作为bean对象存入spring的容器中

属性: name:用于指定bean的id。当不写时,默认值是当前方法的名称


@Import

作用:用于导入其他的配置类

属性: value:用于指定其他配置类的字节码。

例子:@Import(SystemSpringConfig .class)


@PropertySource

作用:用于指定properties文件的位置

属性: value:指定文件的名称和路径。

关键字:classpath,表示类路径下

配合@Value使用

例子:@PropertySource ("classpath : SystemSpringConfig .properties")

 示例说明:

@Configuration
@ComponentScan(basePackages = "com.apesource")
@PropertySource(value = "classpath:jdbc.properties")
@Import(DataConfig.class)
public class ApplicationConfig {@Beanpublic IUserController controller(/*@Autowired */IUserService service){return new UserControllerImp(service);}@Beanpublic IUserService service(IUserDao dao){return new UserServiceImp(dao);}@Beanpublic IUserDao dao(){return new UserDaoImp();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot启动过程中触发的事件

在Spring Boot应用程序启动过程中&#xff0c;会触发以下几个重要的事件&#xff1a; 1.ApplicationStartingEvent&#xff1a;这是在应用程序启动的早期阶段触发的事件。在这个事件中&#xff0c;Spring Boot的SpringApplication正在准备应用程序上下文之前&#xff0c;但是在…

前端和后端交互方式

前端和后端交互一般通过HTTP请求和响应来进行。前端通过浏览器向后端发送请求&#xff0c;后端收到请求后进行处理并返回响应&#xff0c;前端接收响应后进行相应的处理。具体的交互方式如下&#xff1a; AJAX&#xff1a;前端通过JavaScript发起异步请求&#xff0c;向后端发…

spring boot shardingsphere mybatis-plus druid mysql 搭建mysql数据库读写分离架构

spring boot shardingsphere mybatis-plus druid mysql 搭建mysql数据库读写分离架构 ##关于window mysql主从搭建简单教程 传送门 window mysql5.7 搭建主从同步环境-CSDN博客 ##父pom.xml <?xml version"1.0" encoding"UTF-8"?> <project…

傲空间私有部署Windows指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。 Docker Desktop for Windows…

小程序宿主环境-组件image

image <image></image> <image src"/images/1.png" mode"aspectFit"></image> image组件的model属性 image组件的model属性用来指定图片的裁剪和缩放模式,常用的model属性如下 scaletofill:(默认缩放模式),不保持原有图片的纵横比…

领略指针之妙

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

springboot的自定义注解使用

1.自定义注解配合拦截器 // 自定义注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface MyAnnotation {// 自定义注解的属性 }// 控制器类 RestController public class MyController {GetMapping("/myEndpoint")MyAnnotation //…

MySQL主从集群

MySQL主从集群 主从模式、集群模式&#xff0c;都是在一个项目中使用多个mysql节点进行存储和读取数据。 当单机模式部署&#xff0c;不满足安全性、高可用、高并发等需求的时候&#xff0c;就需要考虑主从模式或者集群模式部署。 什么是主从模式&#xff1f; 主从模式&…

[3D]菜板上的鱼

本来想画条鲨鱼&#xff0c;结果成了条菜板上的鱼。 VS&#xff01; ** VS&#xff01; ** 【扭曲】更像菜板上的鱼了。

[C#]winform部署openvino官方提供的人脸检测模型

【官方框架地址】 https://github.com/sdcb/OpenVINO.NET 【框架介绍】 OpenVINO&#xff08;Open Visual Inference & Neural Network Optimization&#xff09;是一个由Intel推出的&#xff0c;针对计算机视觉和机器学习任务的开源工具套件。通过优化神经网络&#xff…

C++设计模式之 模板方法模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是模板方法模式&#xff08;第18种设计模式&#xff09; 模板方法模式&#xff0…

最短路径 Dijkstra

目录 最小堆优化邻接矩阵版邻接表版 最小堆优化 优化的点是每次直接通过最小堆的堆顶找到最短路径最小的未搜索的点省去了一层遍历 const int N 1e6 10, INF 0x3f3f3f3f; int h[N], e[N], ne[N], w[N], n, m, idx 0, d[N]; bool visited[N]; void add(int a, int b, int …

【MySQL】——关系数据库标准语言SQL(大纲)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

每日OJ题_算法_滑动窗口⑦_力扣30. 串联所有单词的子串

目录 力扣30. 串联所有单词的子串 解析及代码 力扣30. 串联所有单词的子串 30. 串联所有单词的子串 - 力扣&#xff08;LeetCode&#xff09; 难度 困难 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中…

51单片机8*8点阵屏

8*8点阵屏 8*8点阵屏是一种LED显示屏&#xff0c;它由8行和8列的LED灯组成。每个LED灯的开闭状态都可以独立控制&#xff0c;从而可以显示出数字、字母、符号、图形等信息。 8*8点阵屏的原理是通过行列扫描的方式&#xff0c;控制LED灯的亮灭&#xff0c;从而显示出所需的图案或…

已解决java.net.ConnectException异常的正确解决方法,亲测有效!!!

已解决java.net.ConnectException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 问题分析 报错原因 解决思路 解决方法 确认服务器状态 检查网络连接 检查防火墙设置 验证地址和端口 具体执行步骤 总结 在进行网络编程或构…

Redis- AOF刷盘策略

在Redis中&#xff0c;appendfsync everysec 是一个与持久化相关的配置选项&#xff0c;它属于 Redis 的 AOF&#xff08;Append Only File&#xff09;持久化策略的一部分。 Redis支持两种主要的数据持久化方式&#xff1a;RDB&#xff08;快照&#xff09;和AOF&#xff08;…

多线程编程常见面试题讲解(锁策略,CAS策略,synchronized原理,JUC组件,集合类)

&#x1f495;"跑起来就有意义"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;多线程编程常见面试题讲解 hello各位朋友们,最近笔者刚刚结束了学校的期末考试,现在回来继续更新啦!!! 今天要学习的是多线程常见面试题讲解,这些内容都是面试中常考的…

Cortex-M3/M4内核NVIC及HAL库函数详解(3):HAL库中断应用层函数实现

0 工具准备 Keil uVision5 Cortex M3权威指南&#xff08;中文&#xff09; Cortex M3与M4权威指南 stm32f407的HAL库工程 STM32F4xx中文参考手册 1 HAL库中断应用层函数实现 在完成了HAL库中断底层函数后&#xff0c;应用层的封装可以做得千变万化。打开Librarier->STM32F…

在k8s上部署ClickHouse

概述 clickhouse的容器化部署&#xff0c;已经有非常成熟的生态了。在一些互联网大厂也已经得到了大规模的应用。 clickhouse作为一款数据库&#xff0c;其容器化的主要难点在于它是有状态的服务&#xff0c;因此&#xff0c;我们需要配置PVC。 目前业界比较流行的部署方式有…