ioc控制反转到底反转的是什么,java控制反转原理

ioc控制反转到底反转的是什么,java控制反转原理,Java 中的控制反转(IOC)详解

这篇文章主要介绍了理解Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中的国际奥林匹克委员会控制反转,具有一定参考价值,需要的朋友可以了解下,希望能够给你带来帮助

目录

国际奥委会理论推导春天管理对象春天管理对象的简单例子豆无参构造类创建和有参构造类创建春天的一些配置别名豆的配置进口总结

IOC理论推导

大刀层

1.用户岛接口

2.UserDaoImpl实现类

服务层

3.用户服务业务接口

4.用户服务冲动业务实现类

用户实际调用service层 不会动dao层!

Dao层接口创建

包com。ckm。道;

公共接口UserDao {

void getUser();

}

Dao层实现类1创建

包com。ckm。道;

公共类UserDaoImpl实现UserDao{

@覆盖

public void getUser() {

System.out.println('获取了用户数据');

}

}

Dao层实现类2创建

包com。ckm。道;

公共类UserDaoMysqlImpl实现UserDao{

@覆盖

public void getUser() {

System.out.println('mysql使用了数据');

}

}

Service层接口创建

包com。ckm。服务;

公共接口用户服务{

void getUser();

}

Service层接口实现类创建

包com。ckm。服务;

导入com。ckm。道。userdao

导入com。ckm。道。userdaoimpl

公共类用户服务Impl实现用户服务{

//private UserDao UserDao=new UserDaoImpl();

//利用设置进行动态实现值的注入

私人用户道用户道

public void setUserDao(UserDao UserDao){

this.userDao=userDao

}

@覆盖

public void getUser() {

userdao。getuser();

}

}

单元测试

导入com。ckm。道。userdaoimpl

导入com。ckm。道。userdaomysqlimpl

导入com。ckm。服务。userserviceimpl

公共类测试{

公共静态void main(String[] args) {

//用户实际调用服务层不会动大刀层!

UserServiceImpl userService=new UserServiceImpl();

用户服务。set userdao(new UserDaoMysqlImpl());

用户服务。getuser();

}

}

Spring管理对象

资源中新建beans.xml文件

?可扩展标记语言版本='1.0 '编码='UTF八号'?

豆子xmlns=' http://www。spring框架。'组织/架构/bean '

xmlns:xsi=' http://。w3。' org/2001/XML架构-实例'

xsi:架构位置=' http://www。spring框架。组织/模式/bean

https://www.springframework.org/schema/beans/spring-beans.xsd'

!-使用春天来创建对象,在春天这些都称为豆子-

!- bean=对象-

!- id=变量名-

!- class=new的对象-

!-财产相当于给对象中的属性设值-

bean id=' Dao impl ' class=' com。ckm。道。userdaoimpl '/

bean id=' MysqlImpl ' class=' com。ckm。道。userdaomysqlimpl '/

bean id=' UserServiceImpl ' class=' com。ckm。服务。UserServiceImpl '

!-

价值具体的值,基本数据类型

裁判员是引用春天中创建好的对象

用户需要什么就直接修改裁判员就好的

-

属性名='userDao' ref='MysqlImpl' /

/bean

/豆子

大刀层、服务层代码不变

测试类

导入com。ckm。服务。userserviceimpl

导入org。spring框架。语境。应用程序上下文;

导入组织。spring框架。语境。支持。classpathmlaplicationcontext

公共类测试{

公共静态void main(String[] args) {

应用程序上下文context=new classpathmlaplicationcontext(' bean。XML’);

UserServiceImpl UserServiceImpl=(UserServiceImpl)上下文。get bean(' UserServiceImpl ');

userserviceimpl。getuser();

}

}

Spring管理对象的简单例子

用户类

包com。ckm。POJO

公共类你好

私有字符串潜艇用热中子反应堆(submarine thermal reactor的缩写)

公共字符串getStr() {

返回字符串;

}

public void setStr(String str) {

this.str=str

}

@覆盖

公共字符串toString() {

回复"你好"

str='' str '\ ' '

'}';

}

}

beans.xml

包com。ckm。POJO

公共类你好

私有字符串潜艇用热中子反应堆(submarine thermal reactor的缩写)

公共字符串getStr() {

返回字符串;

}

public void setStr(String str) {

this.str=str

}

@覆盖

公共字符串toString() {

回复"你好"

str='' str '\ ' '

'}';

}

}

测试类

导入com。ckm。POJO。你好;

导入org。spring框架。语境。应用程序上下文;

导入组织。spring框架。语境。支持。classpathmlaplicationcontext

公共类我的测试{

公共静态void main(String[] args) {

//获取春天的上下文对象

//xml加载必须新的ClassPathXmlApplicationContext()

应用程序上下文context=new classpathmlaplicationcontext(' bean。XML’);

//我们的对象现在都在春天中管理,我们要使用,直接去里面取出来

Hello Hello=(Hello)上下文。get bean(' Hello ');

系统。出去。println(你好。getstr());

}

}

Bean无参构造类创建和有参构造类创建

当getBean的时候,这个类就已经被实例化了,就会执行无参构造方法

有参构造的用户类

包com。ckm。POJO

公共类用户{

私有字符串名称;

//public User() {

//System.out.println('无参构造');

//}

公共用户(字符串名称){

this.name=name

}

公共字符串getName() {

返回名称;

}

公共void集合名称(字符串名){

this.name=name

}

公共void show(){

系统。出去。println(' name=' name);

}

}

编写Beans.xml

!-第一种下标赋值-

bean id=' user ' class=' com。ckm。POJO。'用户'

构造函数-参数索引='0 '值='这个是第一种有参设置的名称'/

/bean

!-第二种直接通过参数名-

bean id=' user ' class=' com。ckm。POJO。'用户'

构造函数-参数名称='名称'值='这个是第二种方法是有参设置的名称'/

/bean

Spring的一些配置

别名

!-别名是别名,我们可以使用这个别名来获取这个对象-

别名='用户'别名='用户新'/

Bean的配置

!-在豆中名字也是别名,可以同时取多个别名-

bean id=' user ' class=' com。ckm。POJO。用户' name='用户1,用户2,用户3,用户4'/

import

!-这个导入,一般用于团队开发,他可以将多个配置文件导入合并成一个-

导入资源='beans1.xml'/

导入资源='beans2.xml'/

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更对内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: