基于注解的IOC

(99条消息) Spring基于注解的IoC配置_Demon_gu的博客-CSDN博客

也称为DI(Dependency Injection),它是IOC的具体实现技术

总的都是要创建对象,并且进行依赖的注入

1)创建对象的注解

@Componet:可以创建任意的对象

@Controller:专门可以创建控制器的对象(Servlet),这种对象可以接受用户的请求,可以返回处理结果给客户端

@Service:专门用来创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕之后的结果返回给页面层

@Repository:专门用来访问数据访问层的对象,负责数据库里面的增删改查的各种操作

2)依赖注入的注解

@Value:用来简单类型的注入

引用类型的注入:

@Component

//pojo的类别
package org.example.s01.pojo;import org.springframework.stereotype.Component;
@Component("stu")
public class Student {private String name;private int age;public Student() {System.out.println("你好啊");}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}//测试类@Testpublic void test01(){ApplicationContext ax = new ClassPathXmlApplicationContext("s01/applicationContext.xml");Student stu = (Student) ax.getBean("stu");System.out.println(stu);}
<context:component-scan base-package="org.example.s01"></context:component-scan>

@Value是数值的注入

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("stu")
public class Student {@Value("wsy")private String name;@Value("11")private int age;public Student() {System.out.println("你好啊");}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

引用依赖的注入:必须是同源类型的注入a完全相同的类型b父子类c注入的类型是接口和实现类

@Autowired可以自己将类型注入

按名称来注入引用类型 还是要和Autpwired配合来使用的

@Autowired

@Qualifier("school")

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component("stu")
public class Student {@Value("王小宇")private String name;@Value("19")private int age;@Autowired@Qualifier("school")private School school;public Student() {}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", school=" + school +'}';}
}

子类调用构建方法,不管是有参数还是没有参数,默认都会调用父类的无参构造方法

在父子类进行注入的时候,按类型进行注入的时候都是符合要求的但是进一步会根据名称再一次进行筛选,名字相同的则会被注入

三层架构的注解首先数据库层是@Repository 服务层是@Service 界面层控制层是@Controller

//数据库层
package org.example.dao;import org.example.pojo.Users;
import org.springframework.stereotype.Repository;@Repository
public class UserMapperImpl implements UserMapper{@Overridepublic int insert(Users users) {System.out.println("已经增加了用户");return 1;}
}//服务层
package org.example.service.impl;import org.example.dao.UserMapper;
import org.example.dao.UserMapperImpl;
import org.example.pojo.Users;
import org.example.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UsersServiceImpl implements UsersService {@AutowiredUserMapper userMapper;@Overridepublic int insert(Users users) {return userMapper.insert(users);}
}//控制层
package org.example.controller;import org.example.pojo.Users;
import org.example.service.UsersService;
import org.example.service.impl.UsersServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller
public class UserController {@AutowiredUsersService usersService;public int insert(Users users){return usersService.insert(users);}
}

公司做大型项目的时候,可以来按层拆也可以按着功能来拆

关于xml三层架构的项目的拆分与合并

批量导入就是可以用*号来代替这些名字

基于注解的方式就是扫描的时候,分层来扫描;一个文件夹里面放一层,然后分层去import

xml autowire的补充:

    <bean id="school" class="org.example.pojo2.School"><property name="address" value="湖北省武汉市"></property><property name="name" value="武汉市第一小学"></property></bean><bean id="student" class="org.example.pojo2.Student" autowire="byType"><property name="name" value="ZZ"></property><property name="age" value="19"></property>
<!--        <property name="school" ref="school"></property>--></bean>

Spring学习笔记(二)相关推荐

  1. Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )

    Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...

  2. Spring学习笔记:配置单数据源

    Spring学习笔记:配置单数据源 一.Spring Boot默认数据源类型 Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfig ...

  3. Spring学习笔记之MyBatis

    系列文章目录 Spring学习笔记 之 Springhttps://blog.csdn.net/weixin_43985478/article/details/124411746?spm=1001.2 ...

  4. 【Spring学习笔记 九】Spring声明式事务管理实现机制

    什么是事务?事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用,关乎数据准确性的地方我们一定要用到事务,防止业务逻辑出错. 什么是事务管理,事务管理对于企业应用而言至 ...

  5. motan学习笔记 二 motan架构分析

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

  6. spring学习笔记(一)创建对象的四种方式

    spring学习笔记(一)创建对象的四种方式 一.简介 ​ Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. ​ 所谓IoC就是Iversion of Control,控制反 ...

  7. 码匠社区学习笔记(二)

    所需资料 教程视频地址 Bootstrap spring模板 elasticsearch中文社区(想模仿的效果) 码云aAuth 获取授权用户的资料 github第三方授权文档 码匠社区学习笔记(二) ...

  8. springmvc学习笔记二:重定向,拦截器,参数绑定

    springmvc学习笔记二:重定向,拦截器,参数绑定 Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加mo ...

  9. JavaEE——Spring学习笔记01【Ioc开发的模式】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  10. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

最新文章

  1. 分层级联Transformer!苏黎世联邦提出TransCNN: 显著降低了计算/空间复杂度!
  2. 【总结】Kylin LDAP配置
  3. 电商的本质是“商”还是“用户”?
  4. 前端学习(3129):react-hello-react之回调形式的ref的次数问题
  5. java中select的用法_mybaties中select用法,以及常用增删改查
  6. ES6新特性_const声明常量以及特点---JavaScript_ECMAScript_ES6-ES11新特性工作笔记005
  7. openmeetings2.0安装和开发
  8. html浮窗音乐播放器插件,墨涩网 - WordPress浮窗音乐播放器Floating Window Music Player V3.2.6——墨涩网...
  9. Twaver-HTML5基础学习(2)基本数据元素(Data)
  10. 程序员经常看的开源月刊《HelloGitHub》第 56 期
  11. 数据标准化的方法与作用
  12. Swing MVC设计模式
  13. linux装windows报错,安装Windows 和 Linux双系统(vmware) Centos7
  14. 上海交通大学计算机科学与工程系,上海交通大学计算机科学与工程系(CSE)
  15. 键盘录入长方形的长和宽,计算长方形的周长和面积,请使用面向对象的方式解决
  16. 动词的时态---将来时
  17. 我国量子计算机 图片,Origin Q一周速览:国内首个量子计算生物化学行业应用生态联盟成立...
  18. pointer和reference(指针和引用)的区别:*
  19. ZOJ 3605 Find the Marble
  20. 计算机室维修报告,电脑维修-计算机组装和维护的实习报告

热门文章

  1. very very good,Java面试宝典+Java核心知识集
  2. 初学媒体软件时的一些鼠绘作品
  3. 算法基础(2) | 高精度、前缀和、差分
  4. 安徽大学软件工程考研历程
  5. 萤石开放平台二次开发——摄像头取流至抖音直播平台
  6. 圣路易斯华盛顿大学计算机科学,圣路易斯华盛顿大学计算机科学硕士项目解析...
  7. 二叉树家谱关系实验报告
  8. 超市管理系统用例建模
  9. word另存为的快捷键
  10. 仅仅有人物没背景的图片怎么弄_只会画人物不会画背景?这3种方法教你快速画背景!...