Spring超详细讲解注解开发

目录
  • 1.使用注解开发
    • 1.1.Bean的实现
    • 1.2.属性注入
    • 1.3.衍生注解
    • 1.4.自动装配注解
    • 1.5.作用域
    • 1.6.小结
  • 2.基于Java类进行配置

1.使用注解开发

说明

在spring4之后,想要使用注解形式,必须得要引入aop的包

在配置文件当中,还得要引入一个context约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    https://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
</beans>

1.1.Bean的实现

我们之前都是使用 bean 的标签进行bean注入,但是实际开发中,我们一般都会使用注解!

1、配置扫描哪些包下的注解

 <context:component-scan base-package="com.hc.pojo"/>

2、在指定包下编写类,增加注解

@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
   public String name = "秦疆";
}

3、测试

@Test
public void test(){
   ApplicationContext applicationContext =
       new ClassPathXmlApplicationContext("beans.xml");
   User user = (User) applicationContext.getBean("user");
   System.out.println(user.name);
}

1.2.属性注入

使用注解注入属性

1、可以不用提供set方法,直接在直接名上添加@value(“值”)

@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
   @Value("秦疆")
   // 相当于配置文件中 <property name="name" value="秦疆"/>
   public String name;
}

2、如果提供了set方法,在set方法上添加@value(“值”);

@Component("user")
public class User {
   public String name;
   @Value("秦疆")
   public void setName(String name) {
       this.name = name;
  }
}

1.3.衍生注解

我们这些注解,就是替代了在配置文件当中配置步骤而已!更加的方便快捷!

@Component三个衍生注解

为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

  • @Controller:controller层
  • @Service:service层
  • @Repository:dao层

写上这些注解,就相当于将这个类交给Spring管理装配了!

1.4.自动装配注解

在Bean的自动装配已经讲过了,可以回顾!

1.5.作用域

@scope

  • singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。
  • prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收
@Controller("user")
@Scope("prototype")
public class User {
   @Value("秦疆")
   public String name;
}

1.6.小结

XML与注解比较

  • XML可以适用任何场景 ,结构清晰,维护方便
  • 注解不是自己提供的类使用不了,开发简单方便

xml与注解整合开发 :推荐最佳实践

  • xml管理Bean
  • 注解完成属性注入
  • 使用过程中, 可以不用扫描,扫描是为了类上的注解
<context:annotation-config/> 

作用:

  • 进行注解驱动注册,从而使注解生效
  • 用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册
  • 如果不扫描包,就需要手动配置bean
  • 如果不加注解驱动,则注入的值为null!

2.基于Java类进行配置

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。

测试:

1、编写一个实体类,Dog

@Component  //将这个类标注为Spring的一个组件,放到容器中!
public class Dog {
   public String name = "dog";
}

2、新建一个config配置包,编写一个MyConfig配置类

@Configuration  //代表这是一个配置类
public class MyConfig {
   @Bean //通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
   public Dog dog(){
       return new Dog();
  }
}

3、测试

@Test
public void test2(){
   ApplicationContext applicationContext =
           new AnnotationConfigApplicationContext(MyConfig.class);
   Dog dog = (Dog) applicationContext.getBean("dog");
   System.out.println(dog.name);
}

4、成功输出结果!

导入其他配置如何做呢?

1、我们再编写一个配置类!

@Configuration  //代表这是一个配置类
public class MyConfig2 {
}

2、在之前的配置类中我们来选择导入这个配置类

@Configuration
@Import(MyConfig2.class)  //导入合并其他配置类,类似于配置文件中的 inculde 标签
public class MyConfig {
   @Bean
   public Dog dog(){
       return new Dog();
  }
}

关于这种Java类的配置方式,我们在之后的SpringBoot 和 SpringCloud中还会大量看到,我们需要知道这些注解的作用即可!

到此这篇关于Spring超详细讲解注解开发的文章就介绍到这了,更多相关Spring注解开发内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解spring如何使用注解开发

    在Spring4之后,要使用注解开发,必须要保证aop的包导入了. 使用注解需要导入context约束,增加注解的支持. <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance

  • Spring详解使用注解开发流程

    目录 在Spring4之后 要使用注解开发 必须保证aop包导入了 使用注解需要导入context约束 增加 注解的支持 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance

  • SpringBoot自定义注解开发指南

    目录 一.Java注解(Annotation) 1.JDK基本注解 2.JDK元注解 二.自定义注解开发 1.含义 2.演示 三.完成切面日志操作 四.完成前端响应反应 总结 一.Java注解(Annotation) 含义:Java注解是附加在代码中的一些元信息,用于一些工具在编译. 运行时进行解析和使用,起到说明.配置的功能. 1.JDK基本注解 @Override ——>重写 @Deprecated ——>已过时 @SuppressWarnings(value = "unchec

  • Spring入门到精通之注解开发详解

    目录 Spring原始注解 DI 依赖注入的注解实现方式 Spring新注解 @Configuration @ComponentScan @Import @PropertySource @value @Bean Spring整合Junit 原始Junit测试Spring的问题 上述问题解决思路 Spring集成Junit步骤 Spring集成Junit代码实现 Spring原始注解 Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以

  • Spring纯注解开发模式让开发简化更简化

    目录 一.注解开发 二.注解定义Bean 三.衍生注解 四.纯注解开发模式 五.注解实现注入 1.自动装配 2.按名称注入 3.简单数据注入 4.读取properties配置文件 六.Spring整合MyBatis 一.注解开发 以前跟老韩学习SE时他就说: 注解本质是一个继承了Annotation 的特殊接口,其具体实现类是Java 运行时生成的动态代理类. 而我们通过反射获取注解时,返回的是Java 运行时生成的动态代理对象$Proxy1.通过代理对象调用自定义注解(接口)的方法,会最终调用

  • Java之Spring注解开发案例详解

    在Spring4之后,要使用注解开发,必须要保证aop的包导入了 使用注解需要导入context约束,增加注解的支持! <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&

  • CSS的三大样式你了解多少

    目录 CSS样式 行内式 内部式 外部式 多重样式优先级 总结 CSS样式 行内式 又叫:内联样式.行内样式.嵌入式样式 <!-- style作为属性直接写在标签后面, style属性可以包含任何 CSS属性 --> <div style="font-size: 40px; color: #FF0000;">我是div</div> <div style="font-size: 40px; color: blue;">我

  • Spring注解开发生命周期原理解析

    生命周期 initMethod和destroyMethod Bean定义 public class Car { public Car() { System.out.println("car constructor"); } public void init(){ System.out.println("car init"); } public void destroy(){ System.out.println("car destroy"); }

  • 通过spring注解开发,简单测试单例和多例区别

    目录 通过spring注解开发,测试单例和多例区别 1.注解和配置两种用法形式 2.在spring框架中,scope作用域默认是单例的 3.实例 (1)多例: (2)单例(注解版) Spring中单例和多例的理解 1.什么是单例和多例 2.Spring中的单例与多例 单例bean与多例(原型)bean的区别: 3.单例的优势与劣势 优势: 劣势: 4.spring单例模式与线程安全: 如何解决线程安全问题? 5.单例如何变多例 通过spring注解开发,测试单例和多例区别 1.注解和配置两种用法

  • Spring超详细讲解注解开发

    目录 1.使用注解开发 1.1.Bean的实现 1.2.属性注入 1.3.衍生注解 1.4.自动装配注解 1.5.作用域 1.6.小结 2.基于Java类进行配置 1.使用注解开发 说明 在spring4之后,想要使用注解形式,必须得要引入aop的包 在配置文件当中,还得要引入一个context约束 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.spring

  • Spring超详细讲解面向对象到面向切面

    目录 前言 一.OOP&AOP 二.AOP核心 三.第一个AOP案例 1.环境准备 2.AOP实现步骤 四.切入点表达式 1.语法格式 2.通配符 五.AOP通知类型 环境准备 环绕通知 1.返回后通知 2.异常后通知 前言 Object object = new Object(); 世间万物的本质都可看作类的对象,面向对象(OOP)的模式让程序易维护.易复用.易扩展,而面向切面(AOP)则是面向对象的补充,让对象的功能更加强大 对比前面的日志框架技术二者非常相似,他的特点就是在不影响业务的前提

  • Spring超详细讲解IOC与解耦合

    目录 前言 一.所谓耦合 二.Spring 三.核心IOC理解 1.容器 2.控制反转 3.依赖注入 四.Bean的实例化 1.无参构造 2.工厂静态方法 3.工厂实例方法(常用) 五.Bean的依赖注入 1.set注入 2.有参构造 六.第一个Spring案例 前言 回想写过的图书管理系统.租房系统.电影院卖票系统都是基于原生的JavaSE.OOP,没有用到任何框架,在层与层的关系中一个类要想获得与其他类的联系主要的方式还是靠new,这就导致层与层之间.对象与对象之间的依赖性强“动一发而迁全身

  • Spring超详细讲解AOP面向切面

    目录 简介 AOP底层原理 代理概念 JDK动态代理实现 Spring中的AOP 相关术语 AspectJ 实现AOP 不同通知类型实现 相同的切入点抽取 增强类优先级 完全使用注解开发 说明:基于atguigu学习笔记. 简介 AOP(Aspect Oriented Programming)是一种面向切面的编程思想.不同于面向对象里的继承思想,当需要为多个不具有继承关系的对象引人同一个公共行为时,也就是把程序横向看,寻找切面,插入公共行为. AOP目的是为了些把影响了多个类的公共行为抽取到一个

  • Spring超详细讲解事务

    目录 什么是事务 事务的四个特性(ACID) Spring对事务的支持 编程式事务管理 声明式事务管理 基于注解的声明式事务管理 Spring事务管理的三个接口 Spring事务属性 什么是事务 一个数据库事务是一个被视为一个工作单元的逻辑上的一组操作,这些操作要么全部执行,要么全部不执行. 需要注意的是,并不是所有的数据库(引擎)都支持事务,比如说MySQL的MyISAM存储引擎 事务的四个特性(ACID) 原子性:事务是一个原子性操作,一个事务由一系列操作组成,这一系列操作要么全部执行完成,

  • Spring超详细讲解事务和事务传播机制

    目录 为什么需要事务 Spring 声明事务 Transactional参数说明 propagation isolation timeout 事务回滚失效解决方案 @Transactional工作原理 Spring 事务的传播机制 为什么需要事务传播机制? 传播机制的类型 为什么需要事务 事务是将一组操作封装成一个执行单元,要么全部成功,要么全部失败.如果没有事务,转账操作就会出现异常,因此需要保证原子性. Spring 声明事务 只需要在方法上添加@Transactional注解就可以实现,无

  • Spring超详细讲解创建BeanDefinition流程

    目录 一.前期准备 1.1 环境依赖 1.2 实体类 1.3 applicationContext.xml 1.4 测试代码 二.探究过程 2.1 目标 2.2 BeanDefinition的创建过程 2.2.1 回顾bean对象的创建 2.2.2 AbstractApplicationContext 2.2.3 AbstractXmlApplicationContext 2.2.4 AbstractBeanDefinitionReader 2.2.5 XmlBeanDefinitionRead

  • Spring超详细讲解BeanUtils改造

    目录 1.基本原理 2.使用 3.性能 4.提醒 1.基本原理 原理:https://www.jb51.net/article/252384.htm 浅拷贝:https://www.jb51.net/article/221283.htm BeanUtils.copyProperties();确实为我们做了很多事情,虽然不能完美完成深拷贝,但是对于 po.vo.dto 的拷贝已经足够用了.但是其还是有一些不够完美的地方. 不足几点如下: 不能拷贝 list,而拷贝 list 的情况又大量存在,因此

  • Java 超详细讲解核心类Spring JdbcTemplate

    目录 JdbcTemplate概述 JdbcTemplate开发步骤 JdbcTemplate快速入门 Spring产生JdbcTemplate对象 JdbcTemplate的常用操作 修改操作 删除和查询全部操作 查询单个数据操作 本章小结 JdbcTemplate概述 它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装.spring框架为我们提供了很多的操作 模板类.例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nos

  • Java 超详细讲解Spring MVC异常处理机制

    目录 异常处理机制流程图 异常处理的两种方式 简单异常处理器SimpleMappingExceptionResolver 自定义异常处理步骤 本章小结 异常处理机制流程图 系统中异常包括两类: 预期异常 通过捕获异常从而获取异常信息. 运行时异常RuntimeException 主要通过规范代码开发.测试等手段减少运行时异常的发生. 系统的Dao.Service.Controller出现都通过throws Exception向上抛出,最后SpringMVC前端控制器交由异常处理器进行异常处理,如

随机推荐