iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring注解有哪些及怎么使用
  • 158
分享到

Spring注解有哪些及怎么使用

2023-07-02 15:07:00 158人浏览 薄情痞子
摘要

这篇文章主要介绍了spring注解有哪些及怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring注解有哪些及怎么使用文章都会有所收获,下面我们一起来看看吧。Spring原始注解Spring是轻代码而

这篇文章主要介绍了spring注解有哪些及怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring注解有哪些及怎么使用文章都会有所收获,下面我们一起来看看吧。

Spring原始注解

Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。

Spring原始注解主要是替代的配置

注解说明对应xml标签
@Component使用在类上用于实例化Bean 
@Controller使用在WEB控制层类上用于实例化Bean 
@Service使用在service层类上用于实例化Bean 
@Repository使用在dao层类上用于实例化Bean 
@Autowired使用在字段上用于根据类型依赖注入 
@Qualifier结合@Autowired一起使用用于根据名称进行依赖注入 
@Resource相当于@Autowired+@Qualifier,按照名称进行注入 
@Value注入普通属性 
@Scope标注Bean的作用范围,默认单例,注解加在类上标签的scope属性
@PostConstruct使用在方法上标注该方法是Bean的初始化方法标签的init-method属性
@PreDestroy使用在方法上标注该方法是Bean的销毁方法标签的destory-method属性

注意: 使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。

<!--注解的组件扫描--><context:component-scan base-package="com.zjq"></context:component-scan>

使用@Compont或@Repository标识UserDaoImpl需要Spring进行实例化。

//@Component("userDao")@Repository("userDao")public class UserDaoImpl implements UserDao {    @Override    public void save() {    System.out.println("save running... ...");    }}

使用@Compont或@Service标识UserServiceImpl需要Spring进行实例化

使用@Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入

//@Component("userService")@Service("userService")public class UserServiceImpl implements UserService {        @Resource(name="userDao")    private UserDao userDao;    @Override    public void save() {            userDao.save();    }}

使用@Value进行字符串的注入

@Repository("userDao")public class UserDaoImpl implements UserDao {    @Value("注入普通数据")    private String str;    @Value("${jdbc.driver}")    private String driver;    @Override    public void save() {        System.out.println(str);        System.out.println(driver);        System.out.println("save running... ...");    }}

使用@Scope标注Bean的范围

//@Scope("prototype")@Scope("singleton")public class UserDaoImpl implements UserDao {   //此处省略代码}

使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法

@PostConstructpublic void init(){System.out.println("初始化方法....");}@PreDestroypublic void destroy(){System.out.println("销毁方法.....");}

DI 依赖注入的注解实现方式

@Autowired(推荐使用)

@Autowired为Spring提供的注解,需要导入包 org.springframework.beans.factory.annotation.Autowired。

@Autowired采取的策略为按照类型注入。

    @Autowired    private UserDao userDao;

如上代码所示,这样装配回去spring容器中找到类型为AccountDao的类,然后将其注入进来。这样会产生几个问题,当多个类型有多个bean值的时候,会造成选择具体注入哪几个的情况,这个时候我们需要配合着@Qualifier使用。

@Qualifier

@Qualifier告诉Spring具体去装配哪个对象。

    @Autowired    @Qualifier("userDao")    private UserDao userDao;

这个时候我们就可以通过类型和名称定位到我们想注入的对象。

@Resource

@Resource 注解由 J2EE 提供,需要导入包 javax.annotation.Resource。 @Resource 默认按照 ByName自动注入。

public class TransferService {    @Resource    private AccountDao accountDao;    @Resource(name="studentDao")    private StudentDao studentDao;    @Resource(type="TeacherDao")    private TeacherDao teacherDao;    @Resource(name="manDao",type="ManDao")    private ManDao manDao;}
  • 如果同时指定了 name 和 type,则从Spring上下中找到唯一匹配的bean进入装配,找不到则抛出异常。

  • 如果指定了 name,则从上下中查找名称(id)匹配的bean进入装配,找不到则抛出异常。

  • 如果指定了 type,则从上下中找到类似匹配的唯一bean进入装配,找不到或是找到多个,都会抛出异常。

  • 如果既没有指定name,也没有指定type,则自动按照byName方式进入装配;

注意: @Resource 在 jdk 11中已经移除,如果要使用,需要单独引入jar

<dependency>    <groupId>javax.annotation</groupId>    <artifactId>javax.annotation-api</artifactId>    <version>1.3.2</version></dependency>

Spring新注解

使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下:

非自定义的Bean的配置:

加载properties文件的配置:context:property-placeholder

组件扫描的配置:context:component-scan

引入其他文件:

注解
@Configuration
用于指定当前类是一个 Spring   配置类,当创建容器时会从该类上加载注解
@ComponentScan
用于指定 Spring   在初始化容器时要扫描的包。   作用和在 Spring   的 xml 配置文件中的   <context:component-scan   base-package="com.zjq"/>一样
@Bean
使用在方法上,标注将该方法的返回值存储到   Spring   容器中
@PropertySource
用于加载.properties   文件中的配置
@Import
用于导入其他配置类

@Configuration @ComponentScan @Import

@Configuration@ComponentScan("com.zjq")@Import({DataSourceConfiguration.class})public class SprinGConfiguration {}

@PropertySource @value

@PropertySource("classpath:jdbc.properties")public class DataSourceConfiguration {    @Value("${jdbc.driver}")    private String driver;    @Value("${jdbc.url}")    private String url;    @Value("${jdbc.username}")    private String username;    @Value("${jdbc.passWord}")    private String password;

@Bean

@Bean(name="dataSource")public DataSource getDataSource() throws PropertyVetoException {     ComboPooledDataSource dataSource = new ComboPooledDataSource();     dataSource.setDriverClass(driver);    dataSource.setJdbcUrl(url);    dataSource.setUser(username);    dataSource.setPassword(password);    return dataSource;}

测试加载核心配置类创建Spring容器

@Testpublic void testAnnoConfiguration() throws Exception {ApplicationContext applicationContext = new           AnnotationConfigApplicationContext(SpringConfiguration.class);    UserService userService = (UserService)        applicationContext.getBean("userService");    userService.save();    DataSource dataSource = (DataSource)     applicationContext.getBean("dataSource");    Connection connection = dataSource.getConnection();     System.out.println(connection);    }

Spring整合Junit

原始Junit测试Spring的问题

在测试类中,每个测试方法都有以下两行代码:

 ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class);

这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉。

上述问题解决思路

让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它

将需要进行测试Bean直接在测试类中进行注入

Spring集成Junit步骤

①导入spring集成Junit的坐标

②使用@Runwith注解替换原来的运行期

③使用@ContextConfiguration指定配置文件或配置类

④使用@Autowired注入需要测试的对象

⑤创建测试方法进行测试

Spring集成Junit代码实现

①导入spring集成Junit的坐标

<!--此处需要注意的是,spring5 及以上版本要求 junit 的版本必须是 4.12 及以上--><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-test</artifactId>    <version>5.0.2.RELEASE</version></dependency><dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.12</version>    <scope>test</scope></dependency>

②使用@Runwith注解替换原来的运行期

@RunWith(SpringJUnit4ClassRunner.class)public class SpringJunitTest {}

③使用@ContextConfiguration指定配置文件或配置类

@RunWith(SpringJUnit4ClassRunner.class)//加载spring核心配置文件//@ContextConfiguration(value = {"classpath:applicationContext.xml"})//加载spring核心配置类@ContextConfiguration(classes = {SpringConfiguration.class})public class SpringJunitTest {}

④使用@Autowired注入需要测试的对象

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = {SpringConfiguration.class})public class SpringJunitTest {    @Autowired    private UserService userService;}

⑤创建测试方法进行测试

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = {SpringConfiguration.class})public class SpringJunitTest {    @Autowired    private UserService userService;    @Test    public void testUserService(){    userService.save();    }}

关于“Spring注解有哪些及怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Spring注解有哪些及怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Spring注解有哪些及怎么使用

本文链接: https://www.lsjlt.com/news/342897.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring注解有哪些及怎么使用
    这篇文章主要介绍了Spring注解有哪些及怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring注解有哪些及怎么使用文章都会有所收获,下面我们一起来看看吧。Spring原始注解Spring是轻代码而...
    99+
    2023-07-02
  • Spring MVC的常用注解有哪些及怎么用
    这篇文章主要介绍了Spring MVC的常用注解有哪些及怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring MVC的常用注解有哪些及怎么用文章都会有所收获,下面我...
    99+
    2024-04-02
  • spring中的注解有哪些
    spring中的注解有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Spring中的注解大概可以分为两大类:1)spring的bean容器相关的注解,或者说bean工厂相关...
    99+
    2023-05-30
    spring 注解
  • Spring IOC常用注解有哪些与如何使用
    本文小编为大家详细介绍“Spring IOC常用注解有哪些与如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring IOC常用注解有哪些与如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-30
  • Spring Boot的注解有哪些
    这篇文章主要介绍“Spring Boot的注解有哪些”,在日常操作中,相信很多人在Spring Boot的注解有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring Boot的注解有哪些”的疑惑有所...
    99+
    2023-06-16
  • 使用spring的restTemplate注意点有哪些
    这篇文章将为大家详细讲解有关使用spring的restTemplate注意点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用spring的restTemplate注意点spring的restTem...
    99+
    2023-06-25
  • spring boot中有哪些常用的注解
    spring boot中有哪些常用的注解?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。@RestController和@RequestMapping注解0重要的一个新的改进...
    99+
    2023-05-31
    springboot 中有 注解
  • spring mvc中的注解有哪些
    这篇文章给大家介绍spring mvc中的注解有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. @ControllerController控制器是通过服务接口定义的提供访问应用程序的一种行为,它解释用户的输入,...
    99+
    2023-05-31
    springmvc
  • Spring Boot Rest常用框架注解有哪些
    本篇内容主要讲解“Spring Boot Rest常用框架注解有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot Rest常用框架...
    99+
    2023-07-02
  • spring boot的核心注解有哪些
    这期内容当中小编将会给大家带来有关spring boot的核心注解有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在spring boot中,摒弃了spring以往项目中大量繁琐的配置,遵循约定大于配...
    99+
    2023-06-05
  • Spring注解@Scope怎么使用
    @Scope注解用于指定Bean的作用域。Spring提供了多种作用域可选,包括Singleton、Prototype、Reques...
    99+
    2023-08-18
    Spring
  • spring @Component注解怎么使用
    @Component注解是用来标识一个类是Spring容器的一个组件。使用@Component注解的类会被Spring自动扫描并加入...
    99+
    2023-09-23
    spring
  • Spring的注解怎么使用
    这篇“Spring的注解怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring的注解怎么使用”文章吧。非全注解开...
    99+
    2023-06-29
  • Spring注解@Import怎么使用
    今天小编给大家分享一下Spring注解@Import怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。正文在项目开发的过...
    99+
    2023-07-05
  • ubuntu解压命令有哪些及怎么使用
    今天小编给大家分享一下ubuntu解压命令有哪些及怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。ubuntu解压命令...
    99+
    2023-07-04
  • Spring@InitBinder注解使用及原理详解
    目录前言一. @InitBinder注解使用说明二. 实现自定义Editor三. WebDataBinder初始化原理解析四. @InitBinder注解修饰的方法的加载总结前言 ...
    99+
    2023-03-13
    Spring @InitBinder注解 Spring 注解
  • Spring Boot中的注解类型有哪些
    这期内容当中小编将会给大家带来有关Spring Boot中的注解类型有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。声明bean的注解:@Component组件,没有明确角色的bean@Service...
    99+
    2023-05-31
    springboot spring boo 注解
  • Spring的@Bean注解怎么使用
    今天小编给大家分享一下Spring的@Bean注解怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Spring @Be...
    99+
    2023-07-02
  • spring @Scheduled注解的使用误区及解决
    目录@Scheduled注解的使用误区@Scheduled注解各参数详解1、cron2. zone3. fixedDelay4. fixedDelayString5. fixedRa...
    99+
    2024-04-02
  • Spring注入方式有哪些
    本篇内容介绍了“Spring注入方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring的三种注入方式属性(filed)注入这种...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作