博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring 依赖注入
阅读量:5041 次
发布时间:2019-06-12

本文共 2366 字,大约阅读时间需要 7 分钟。

在web项目开发过程中总是集成spring框架进行开发,而spring框架的核心则是依赖注入,之前一直在用spring的依赖注入却没有记录下来。今天则专门来记录下依赖注入的技术;

spring容器:我个人的理解就是一个对象工厂,对象工厂中管理着所有的在容器中定义的对象,在传统配置中,以xml的配置方式来将对象定义在spring容器中,首先spring容器需要解析xml的标签:包含 bean context tx 等标签,并且把xml中的bean的定义转化为内部的beanDifination;

spring xml方式实现依赖注入:

为了模拟效果:我将项目结构分为 DAO SERVICE CONTOLLER 三个层级,其中将DAO 注入SERVICE 中,service 注入controller中。

DAO java代码如下:

public class UserDao {    public void userDao(){        System.out.println("this is the userDao test!");    }}

Service java代码如下:

public interface UserService {    public void getUser();}
public class UserServiceImpl implements UserService{    private UserDao userDao;            public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }    @Override    public void getUser() {//        System.out.println("i am beppe!!");        userDao.userDao();    }    }

CONTROLLER 层的代码如下:

public class UserController {    private UserService userService;        private User user;        public void setUserService(UserService userService) {        this.userService = userService;    }        public void setUser(User user) {        this.user = user;    }    public void getUser(){        userService.getUser();        System.out.println(user.getName());    }}

在spring容器中定义这些需要被spring容器管理的对象:本例用的是xml文件来配置;

1:xml文件的schema头:

beans 的schema头文件是必须的,contexxt头文件不是必须的;

配置相应的依赖以及在对象中注入其他对象:说明:<bean> 标签表示将对象注册在spring容器中,id:该对象在容器中的唯一表示,class属性:指定对象的具体的java类;

<property> 对象需要注入的属性;name:属性名称;需要和对象中set方法中的属性一致,如:

在  UserController中需要注入 UserService ,那么则需要在 UserController类中维护 UserService 的set方法,而property 中的name属性的名称和set方法一致

ref 属性:引用需要注入的对象;

区别:ref属性和value属性:ref属性:应用对象,value属性:注入值;

private UserService userService; public void setUserService(UserService userService) {        this.userService = userService;    }
 

测试代码:

public static void main(String[] args) {        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath:spring-context.xml");//手动开启spring容器        UserController bean = (UserController)context.getBean("userController");  //通过id获取相应的对象        bean.getUser();    }

现在项目中一般都用注解的方式来配置spring,其中的配置原理和xml的原理一致;具体如何配置这里就不一一描述了;

 

转载于:https://www.cnblogs.com/beppezhang/p/6547992.html

你可能感兴趣的文章
使用JAVA如何对图片进行格式检查以及安全检查处理
查看>>
html5实现移动端下拉刷新(原理和代码)
查看>>
iPhone开发中从一个视图跳到另一个视图有三种方法:
查看>>
pytho logging
查看>>
一个Java程序员应该掌握的10项技能
查看>>
c#英文大小写快捷键
查看>>
tpframe免费开源框架又一重大更新
查看>>
一.go语言 struct json相互转换
查看>>
什么是架构设计
查看>>
程序员学习能力提升三要素
查看>>
PHP 微信错误状态返回码说明
查看>>
【4.1】Python中的序列分类
查看>>
ubuntu 移动文件
查看>>
Easy Mock
查看>>
看看 Delphi XE2 为 VCL 提供的 14 种样式
查看>>
Python内置函数(29)——help
查看>>
机器学习系列-tensorflow-01-急切执行API
查看>>
SqlServer 遍历修改字段长度
查看>>
Eclipse快捷键:同时显示两个一模一样的代码窗口
查看>>
《架构之美》阅读笔记05
查看>>