Spring—注解开发

(一)注解开发定义Bean

1.1 取消在xml文件中的< bean >标签,去那个类前面添加@Component()注解,然后在xml文件中添加component感知:

base-package就是到时候去哪个包下找这个类

如果在括号内起了别名,到时候获取Bean,就是getBean("别名");

如果没有在括号内起别名也可以,到时候获取Bean就是getBean(类名.class)

1.2 不使用@component,而是使用@Repository,@Controller,@Service这一系列注解。分别代表数据层,控制层,服务层。每一个都跟component作用一致,只不过是用来区分清楚这个Bean是属于哪一层的。

(二)纯注解开发

主要是把原先的配置文件的方式取代了。以下图为例:

红框外面是容器部分,红框内是核心部分,纯注解使用@Configuration来注明本类(java)是配置类,使用@ConponentScan("Bean对象类所在包名")

同样的,加载配置文件的方式也需要改变:

括号内填写configuration文件的类名.class。

所以整体总结:

复制代码
xml容器 ---> @Configuration
Bean ---> @Component
加载方式 ---> annotationConfigApplicationContext(类名.class)

(三)注解定义作用域,与Bean的生命周期

作用域 :@Scope("singleton(prototype)")
生命周期

复制代码
@PostConstructor() ---> 在构造方法之后,这应用于在构造方法之后执行的方法,例如init()初始化操作
@PreDestroy() ---> 在销毁之前,这适用于在销毁操作之前执行的方法。如果要确保该方法执行,则应该在主函数的末尾手动关闭容器。

(四)注解自动装配,加载properties文件

自动装配 :@Autowired

如果有多个类都实现了同一个接口,则需要辅助配置 @Qulifier() ,来避免出现"不唯一"的异常(因为多个类实现同一接口,它就不知道是该注入哪个类了),并且Qualifier必须要搭配Autowired来使用

简单类型注入

使用@Value注解:

加载properties文件

上述的简单注入如果注入的是来自外界的properties文件,则需要使用注解注明数据源

在这个配置类中,使用@PropertySource(".../properties")来注明
细节注意:使用注解配置时,不允许在文件路径中使用通配符。

(五)第三方Bean管理:

(1)Bean管理:

1.1 导入式:

在内部创建某个类的构造方法,然后使用@Bean来界定该类对象为Bean。为了美观,因此将Bean封装在某个类(注意是非配置类)中,然后在主配置文件中使用import(包名.class)。这种方式叫导入式

说白了就是在其他类中配置Bean,然后在主配置类中导入该类就行。
1.2 扫描式:

将配置Bean对象的那个类注明是@Configuration,然后在主配置类中注明是@ConponentScan(精确到包名)

(2)第三方Bean依赖注入:

2.1 简单类型

可以在方法外定义好几个变量,给上@Value注释,然后在方法中给出变量即可。如下:

2.2 引用类型

往方法里传入个参数就行,只要这个参数对象明确是@Bean注明过的:

XML配置与注解配置比较:

相关推荐
计算机毕设小月哥12 分钟前
【Hadoop+Spark+python毕设】中风患者数据可视化分析系统、计算机毕业设计、包括数据爬取、Spark、数据分析、数据可视化、Hadoop
后端·python·mysql
q***441524 分钟前
Spring Security 新版本配置
java·后端·spring
计算机毕设匠心工作室27 分钟前
【python大数据毕设实战】强迫症特征与影响因素数据分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
o***741733 分钟前
Springboot中SLF4J详解
java·spring boot·后端
孤独斗士37 分钟前
maven的pom文件总结
java·开发语言
雨中散步撒哈拉1 小时前
18、做中学 | 初升高 | 考场一 | 面向过程-家庭收支记账软件
开发语言·后端·golang
CoderYanger1 小时前
递归、搜索与回溯-记忆化搜索:38.最长递增子序列
java·算法·leetcode·1024程序员节
面试鸭1 小时前
科大讯飞,你好大方。。。
java·计算机·职场和发展·求职招聘
韩立学长2 小时前
【开题答辩实录分享】以《智慧物业管理系统的设计与实现》为例进行答辩实录分享
java·后端·mysql
10km2 小时前
java:json-path支持fastjson作为JSON解析提供者的技术实现
java·json·fastjson·json-path