前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【Spring】006-Spring注解开发

【Spring】006-Spring注解开发

作者头像
訾博ZiBo
发布2025-01-06 15:46:38
发布2025-01-06 15:46:38
4500
代码可运行
举报
运行总次数:0
代码可运行

最后更新时间:2020年9月17日19:11:25

一、前述

1、使用注解开发的两个条件

必须导入AOP;

必须在配置文件添加context约束和开启注解支持;

2、环境搭建

第一步:新建一个Moudle,并创建实体类User
代码语言:javascript
代码运行次数:0
复制
package com.zibo.pojo;

import org.springframework.stereotype.Component;

//等价于:<bean id="user" class="com.zibo.pojo.User"/>
//@Component:组件
@Component
public class User {
    public String name = "訾博";
}
第二步:新建配置文件applicationContext.xml
代码语言:javascript
代码运行次数:0
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解扫描,所指定包下所有注解都会被扫描到-->
    <context:component-scan base-package="com.zibo"/>
    <!--开启注解支持-->
    <context:annotation-config/>

</beans>
第三步:编写测试类
代码语言:javascript
代码运行次数:0
复制
package com.zibo;

import com.zibo.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = context.getBean("user", User.class);
        System.out.println(user.name);
    }
}
测试结果:
代码语言:javascript
代码运行次数:0
复制
訾博

二、Bean的注入

1、@Component注解

@Component:用于把当前类作为存入spring容器中;

属性:value用于指定bean的id,当我们不写时,默认为当前类名,首字母小写;

例如:

代码语言:javascript
代码运行次数:0
复制
@Component("user")

@Controller:一般用在表现层;

@Service:一般用在业务层;

@Repository:一般用在持久层;

上面三个注解跟Component的作用是一模一样的,它们三个是spring框架为三层提供的明确注解,使三层对象看起来更清晰;

2、代码示例(见环境搭建)

3、@Bean注解

用在方法上,方法返回值即是所注入的bean;

三、属性的注入

1、@Value注解

作用:

用于注入基本类型String类型

复杂类型(集合、自定义类型等)使用xml配置;

可以用在属性和set方法上,同样用在属性上时set方法不是必须的;

属性:

value指定数据的值,它可以使用spring中的SpEL表达式(也就是Spring的EL表达式);

SpEL的写法:

${表达式};

2、@Value注解演示

第一步:修改实体类User
代码语言:javascript
代码运行次数:0
复制
package com.zibo.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

//等价于:<bean id="user" class="com.zibo.pojo.User"/>
//@Component:组件
@Component
public class User {
    //等价于<property name="name" value="訾博"/>
    @Value("訾博")
    public String name;
}
测试结果:
代码语言:javascript
代码运行次数:0
复制
訾博

四、自动装配注解

(见【Spring】005-Bean的自动装配

五、作用域

1、@Scope注解

取值:

单例模式:singleton;

多例模式:prototype;

web相关,暂不多做赘述;

2、示例代码

第一步:修改User类
代码语言:javascript
代码运行次数:0
复制
package com.zibo.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

//等价于:<bean id="user" class="com.zibo.pojo.User"/>
//@Component:组件
@Component
@Scope("prototype")
public class User {
    //等价于<property name="name" value="訾博"/>
    @Value("訾博")
    public String name;
}
修改测试类:
代码语言:javascript
代码运行次数:0
复制
package com.zibo;

import com.zibo.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = context.getBean("user", User.class);
        User user1 = context.getBean("user", User.class);
        System.out.println(user == user1);
    }
}
测试结果:
代码语言:javascript
代码运行次数:0
复制
false

六、总结

1、xml与注解

xml:

更加万能,适用于任何场合,维护方便;

注解:

不是自己的类是用不了,维护相对复杂;

2、xml与注解的最佳实践

xml用来管理bean;

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

3、注意

一定要导入AOP、开启注解的支持以及扫描包;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前述
    • 1、使用注解开发的两个条件
    • 2、环境搭建
      • 第一步:新建一个Moudle,并创建实体类User
      • 第二步:新建配置文件applicationContext.xml
      • 第三步:编写测试类
      • 测试结果:
  • 二、Bean的注入
    • 1、@Component注解
    • 2、代码示例(见环境搭建)
    • 3、@Bean注解
  • 三、属性的注入
    • 1、@Value注解
      • 作用:
      • 属性:
      • SpEL的写法:
    • 2、@Value注解演示
      • 第一步:修改实体类User
      • 测试结果:
  • 四、自动装配注解
  • 五、作用域
    • 1、@Scope注解
      • 取值:
    • 2、示例代码
      • 第一步:修改User类
      • 修改测试类:
      • 测试结果:
  • 六、总结
    • 1、xml与注解
      • xml:
      • 注解:
    • 2、xml与注解的最佳实践
    • 3、注意
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档