springioc注解详解

文章目录

    • springioc注解详解
  • *简略核心解释
  • 一、springioc是什么?
  • 二、使用步骤
    • 1、使用注解的方式注册bean到IOC容器中
    • 2、使用@AutoWired进行自动注入

*简略核心解释

在项目中,我们都是通过xml文件进行bean或者某些属性的赋 值,其实还有另外一种注解的方式,在企业开发中使用的很多,在bean上添加 注解,可以快速的将bean注册到ioc容器。

一、springioc是什么?

IOC是一种设计思想,在Java开发中,将你设计好的对象交给容器控制,而不是显示地用代 码进行对象的创建。 把创建和查找依赖对象的控制权交给 IoC 容器,由 IoC 容器进行注入、组合对象之间的关 系。这样对象与对象之间是松耦合、功能可复用(减少对象的创建和内存消耗),使得程序 的整个体系结构可维护性、灵活性、扩展性变高。 所谓IOC ,就简短一句话:对象由 spring来创建、管理,装配!

二、使用步骤

1、使用注解的方式注册bean到IOC容器中

  1. 导入jar包 ,maven配置pom.xml,详情可以去 spring初识与使用(一)

配置applicationContext.xml:

<?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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--如果想要将自定义的bean对象添加到IOC容器中,需要在类上添加某些注解Spring中包含4个主要的组件添加注解:@Controller:控制器,推荐给controller层添加此注解@Service:业务逻辑,推荐给业务逻辑层添加此注解@Repository:仓库管理,推荐给数据访问层添加此注解@Component:给不属于以上基层的组件添加此注解注意:我们虽然人为的给不同的层添加不同的注解,但是在spring看来,可以在任意层添加任意注解spring底层是不会给具体的层次验证注解,这样写的目的只是为了提高可读性,最偷懒的方式就是给所有想交由IOC容器管理的bean对象添加component注解使用注解需要如下步骤:1、添加上述四个注解中的任意一个2、添加自动扫描注解的组件,此操作需要依赖context命名空间3、添加自动扫描的标签context:component-scan注意:当使用注解注册组件和使用配置文件注册组件是一样的,但是要注意:1、组件的id默认就是组件的类名首字符小写,如果非要改名字的话,直接在注解中添加即可2、组件默认情况下都是单例的,如果需要配置多例模式的话,可以在注解下添加@Scope注解--><!--定义自动扫描的基础包:base-package:指定扫描的基础包,spring在启动的时候会将基础包及子包下所有加了注解的类都自动扫描进IOC容器--><context:component-scan base-package="cn.dreamgf"></context:component-scan>
</beans>

创建控制器类 PersonController.java:

package cn.dreamgf.controller;import org.springframework.stereotype.Controller;
@Controller
public class PersonController {public PersonController() {System.out.println("Holle Word!");}
}

创建业务类 PersonService.java:

package cn.dreamgf.service;import org.springframework.stereotype.Service;@Service
public class PersonService {System.out.println("Holle Service!");
}

创建数据层类 PersonDao.java:

package cn.dreamgf.dao;import org.springframework.stereotype.Repository;@Repository("personDao")
@Scope(value="prototype")
public class PersonDao {}

2、使用@AutoWired进行自动注入

使用注解的方式实现自动注入需要使用@AutoWired注解。

package cn.dreamgf.controller;import cn.dreamgf.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller
public class PersonController {@Autowiredprivate PersonService personService;public PersonController() {System.out.println("创建对象");}public void getPerson(){personService.getPerson();}
}

PersonService.java

package cn.dreamgf.service;import cn.dreamgf.dao.PersonDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class PersonService {@Autowiredprivate PersonDao personDao;public void getPerson(){personDao.getPerson();}
}

PersonDao.java

package cn.dreamgf.dao;import org.springframework.stereotype.Repository;@Repository
public class PersonDao {public void getPerson(){System.out.println("PersonDao:getPerson");}
}

注意:当使用AutoWired注解的时候,自动装配的时候是根据类型实现的。
1、如果只找到一个,则直接进行赋值,
2、如果没有找到,则直接抛出异常,
3、如果找到多个,那么会按照变量名作为id继续匹配,
1、匹配上直接进行装配
2、如果匹配不上则直接报异常


## 总结

在使用自动装配的时候,出了可以使用@AutoWired注解之外,还可以使用@Resource注解,大家需要知道这两个注解的区别。
1、@AutoWired:是spring中提供的注解,@Resource:是jdk中定义的注解,依靠的是java的标准
2、@AutoWired默认是按照类型进行装配,默认情况下要求依赖的对象必须存在,@Resource默认是按照名字进行匹配的,同时可以指定name属性。
3、@AutoWired只适合spring框架,而@Resource扩展性更好

springioc注解详解相关推荐

  1. Spring Boot注解详解

    文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...

  2. 26.SpringBoot事务注解详解

    转自:https://www.cnblogs.com/kesimin/p/9546225.html @Transactional spring 事务注解 1.简单开启事务管理 @EnableTrans ...

  3. mybatis注解详解

    mybatis注解详解 首 先当然得下载mybatis-3.0.5.jar和mybatis-spring-1.0.1.jar两个JAR包,并放在WEB-INF的lib目录下 (如果你使用maven,则 ...

  4. 开启注解缓存_Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解

    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...

  5. spring-boot注解详解(一)

    spring-boot注解详解(一) @SpringBootApplication @SpringBootApplication = (默认属性)@Configuration + @EnableAut ...

  6. Spring零配置之@Configuration注解详解

    转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...

  7. 【SpringBoot 】SpringBoot注解详解

    [SpringBoot ]SpringBoot注解详解 一.注解(annotations)列表  @SpringBootApplication:包含了@ComponentScan.@Configura ...

  8. java method 注解_JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档  这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...

  9. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

最新文章

  1. 关于博客园与CSDN博客同步的说明
  2. java常用的集合对象_java常用实体类、集合类
  3. 将.frm、.myd和.myi文件导入mysql数据库中
  4. 数据机房建设常用材料有哪些?
  5. 关于.Net 1.1 Windows Forms 控件的一个小问题
  6. Flask和mysql多线程_Flask解析(二):Flask-Sqlalchemy与多线程、多进程
  7. v7000更换电池步骤_ups电源运行中是否可以更换电池?应如何操作呢
  8. 数仓中的星型模型和雪花模型
  9. mongo 学习笔记之(基本命令)
  10. 已知后序与中序输出前序(先序)
  11. 算法模板java_我的Java设计模式-模板方法模式
  12. 运维监控软件 wgcloud 更新,v3.2.7 重构告警模块
  13. 输入银行卡号匹配银行名称
  14. 毕向东java笔记ppt,毕向东java学习笔记.doc
  15. LIBOR-OIS息差利率 伦敦银行同业拆息与隔夜指数掉期
  16. KGB知识图谱帮助金融机构进行风险预判
  17. 一个漏洞潜伏54年?谁才是“潜伏界”最强王者
  18. 日系插画学习笔记(五):日系角色脸部画法-1头部
  19. easyExcel导出excel文件并打包成zip压缩包下载
  20. 为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数 escapeHtml,将<, >, , “进行转义

热门文章

  1. 【图像算法】引导滤波(matlab代码)
  2. 新手小白入门latex排版
  3. 课程设计1:简易洗衣机控制设计
  4. CSAPP-处理器体系架构
  5. 电脑爱好者精选版2015年第22期
  6. 文本挖掘的量化投资应用大起底!
  7. USB Type-c手机无线领夹麦克风(MIC)快充方案,直播神器
  8. 兄弟连的兄弟来自西安
  9. python编程midi键盘按键错乱_键盘按键错乱怎么办?
  10. 基于Matlab的小学毕业班成绩总评模糊聚类分析