当前位置: 首页 > 图灵资讯 > 技术篇> 【Spring】注解开发

【Spring】注解开发

来源:图灵教育
时间:2023-07-20 17:16:37

(知识目录)

一、前言

本文主要介绍spring中关于解开发的知识

第二,内容1。注释开发定义bean步骤

1.使用@component注释定义bean的名称注解定义bean2.contextt在核心配置文件中使用:component-Scan标签扫描组件配置文件扫描组件3.验证bean是否创建主类运行结果可以看出,BoookDaoimpl类中的重写方法出现在操作结果中,表明使用@Component注释定义bean是成功的。

等价写法

spring提供三个衍生等价注解@component注解@Repository @Service @controller分别对应dao层、service层和controler层。service注解注:注释中没有写bean的名字时,只能通过类型获得bean,此时要保证这类bean是唯一的注解中没有bean的名字

2.纯注释开发步骤

1.编写配置类

@Configuration@ComponentScan("demo3.service")public class SpringConfig {}

用@componentScan注释代替配置文件中的默认内容,用@componentScan注释代替contextion:component-scan标签。2.加载配置类,获取bean。

public class App_2 {    public static void main(String[] args) {            ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); // 加载配置,AnnnotationconfigAplicationcontext类        BookService service = context.getBean(BookService.class); // 获取bean        service.bookSerSay();            }}

运行结果运行结果3.如果要扫描多个包,@ComponentScan的值采用字符串数组的形式配置类采用字符串数组的形式扫描多个包

3.注释bean的作用范围和生命周期函数的作用范围

使用@Scope注释bean的作用范围bean的作用范围

生命周期函数

使用@Postconstructor注释自定义初始化函数和销毁函数定义初始化函数;定义销毁函数 使用@Predestroy注释。

    @PostConstruct    public void init() {        System.out.println("init");    }    @PreDestroy    public void destroy() {        System.out.println("destroy");    }

注:Java9之后,这两个注释已经被淘汰。要使用这两个注释,首先是pom.在xml中加入依赖:

<!--        java注释相关依赖-->        <dependency>            <groupId>javax.annotation</groupId>            <artifactId>javax.annotation-api</artifactId>            <version>1.3.2</version>        </dependency>

让我们来看看主类和运行结果主类运行结果

4.依靠注入自动组装和阅读properties文件自动装配阅读properties文件引用简单类型@Autowired注释(按类型)@Value注释。当有多个相同类型的bean时,报告错误。此时,使用@Qualifier注释指定其中一个在阅读properties文件时使用${}。请注意,此时仍有可能阅读系统属性

自动装配@Qualifier注解“注入简单类型”阅读properties文件的内容。首先,在配置类别中,使用@propertysource注释来告知spring有哪些文件加载properties文件

5.第三方bean管理步骤(以DruidataSource为例)

1.在pom.Druid坐标导入xml

<!--        druid连接池-->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.2.0</version>        </dependency>

2.在配置类中写下要获得的对象类型的方法(在方法中添加@Bean注释)

@Configuration@ComponentScan({"demo3.service","demo3.controller","demo3.dao"})public class SpringConfig {    @Bean    public DataSource dataSource() {        DruidDataSource dataSource = new DruidDataSource();        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");        dataSource.setUrl("mysql:jdbc://localhost:3306/daily?useSSL=false");        dataSource.setUsername("root");        dataSource.setPassword("@123456");        return dataSource;    }}

三、获取bean

public class App_5 {    public static void main(String[] args) {        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);        DataSource dataSource = context.getBean(DruidDataSource.class); ////通过方法的返回值类型获得这个bean        System.out.println(dataSource);    }}

4.检查操作结果运行结果可见第三方bean对象已成功创建

注意事项

1.一般情况下,JDBC配置信息不会放在spring配置类中,而是新建JDBConfig类JdbcConfig.class2.在SpringConfig中使用@Import注解导入此类导入JdbcConfig.class操作结果与上述操作结果一致。如果不使用@Import注释,则需要在Jdbconfig类别上添加@configuration注释,并在Springconfig类别上的@componentscan注释中添加此config包。

3.@Import注释只能使用一次。如果需要导入多个配置类,则需要使用数组格式数组格式

6.第三方bean依赖注入简单类型引用类型@Value注释+成员变量方法

注入简单类型注入引用类型如果没有形参这种类型的bean,就会报错。

7.对比xml配置和注释配置

xml与注解配置对比图

三、结语

本文主要介绍:

如何在spring中使用@component注释开发,以及@component注释三个衍生注释;不使用配置文件,使用配置注释开发;bean的作用范围@Scope和声明周期函数@Postconstructor和@PreDestroy;@Autowired和@Value注释分别用于依赖注入中的引用类型和简单类型;如何使用第三方bean和注入依赖,并比较xml和注释的异同。