博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Ioc的实现----------用idea实现控制反转
阅读量:6813 次
发布时间:2019-06-26

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

hot3.png

1.概要:什么为Ioc,以及原理

    091829_pw2q_3745828.png

2.Ioc的实现

        2.1准备工作

                   2.1.1 jar  包:

092545_n1W7_3745828.png

        此外,还加上commons-logging和log4j日志包

                2.1.2用idea创建工程 

                    092824_Ykxb_3745828.png

                    2.1.3勾选自动生成目录结构,否则要自己创建

            092922_QA2I_3745828.png

                2.1.4将jar包放入到项目中

                    093108_QyQs_3745828.png

                    2.1.5需要注意的是 如果是在test目录里面写测试代码,jar包一定也要添加到spring_test里面去,否者会一直报错创建不了bean的错误

                093254_Ncip_3745828.png

         2.2 开始干活

            a.基于xml的方式进行注入

                        2.2.1对无参构造函数进行注入

a.在java下创建User类

//1.创建对象public class User {    public void add(){        System.out.println("添加一个用户");    }}

 b. 在resources下创建bean1.xml,添加如下

  c. 在 test目录下创建TestIoc进行测试 ,点击运行

//3.测试public class TestIoc {    @Test    public void test(){        //加载xml文件        ApplicationContext ac=new ClassPathXmlApplicationContext("bean1.xml");        User user = (User) ac.getBean("user");        user.add();    }}

     2.2.2对有参构造函数进行注入

        a.创建类

/** * 构造函数注入 */public class PropertyDemo1 {    public PropertyDemo1(String name) {        this.name = name;    }    private  String name;    public void test(){        System.out.println("my name is :"+this.name);    }}            

     b.配置文件

  c.测试

@Testpublic void test(){    //加载xml文件    ApplicationContext ac=new ClassPathXmlApplicationContext("bean1.xml");    PropertyDemo1 user = (PropertyDemo1) ac.getBean("name");    user.test();}

             2.2.3对set方法进行注入

         a.创建类

public class Book {    public void setName(String name) {        this.name = name;    }    private  String name;    public  void test(){        System.out.println("书名为: "+this.name);    }}

     b.配置文件

  c.测试

@Testpublic void test(){    //加载xml文件    ApplicationContext ac=new ClassPathXmlApplicationContext("bean1.xml");    PropertyDemo1 user = (PropertyDemo1) ac.getBean("name");    user.test();}

    2.2.4对对象进行注入

  a.创建类

public class BookService {    public void setBookDao(BookDao bookDao) {        this.bookDao = bookDao;    }    private BookDao bookDao;    public void add(){        bookDao.add();    }}
public class BookDao {    public void add(){        System.out.println("添加书籍 ");    }}

b.配置文件

  c.测试

@Testpublic void test3(){    //加载xml文件    ApplicationContext ac=new ClassPathXmlApplicationContext("bean1.xml");    BookService user = (BookService) ac.getBean("bookService");    user.add();}

2.2.5对集合进行注入

a.创建类

public class Person {    public void setArr(String[] arr) {        this.arr = arr;    }    public void setMap(Map
map) { this.map = map; } public void setList(List
list) { this.list = list; } private String[] arr; private Map
map; private List
list; public void test(){ System.out.println("arr is "+arr); System.out.println("map is "+map); System.out.println("list is "+list); }}

b.配置文件

123
234
34
123
asd
zc
vfs
ghj

  c.测试

@Testpublic void test4(){    //加载xml文件    ApplicationContext ac=new ClassPathXmlApplicationContext("bean1.xml");    Person user = (Person) ac.getBean("arr");    user.test();}

b.基于注解的注入

  b.1 创建新的xml文件 , xml配置,下面的代码会扫描具体包下的注解进行自动注入。

        b.2类中的注解

//业务层使用userService注解@Service(value = "userService")public class UserService {    //使用了注解注入后就不用使用set方法了,比xml注入便捷许多    //使用Autowired自动注入//    @Autowired,只要是有UserDao这个类,就会注入,跟@Repository(value = "userDao")无关//    private UserDao userDao;    //指定@Repository(value = "userDao")的类    @Resource(name = "userDao")    private UserDao userDao;    public void add(){        userDao.add();    }}
//持久层的注解为Repository@Repository(value = "userDao")public class UserDao {    public void add(){        System.out.println("UserDao add user");    }}

b.3测试

@org.junit.Testpublic void testService(){    ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");    UserService user = (UserService) context.getBean("userService");    user.add();}

转载于:https://my.oschina.net/u/3745828/blog/1608279

你可能感兴趣的文章
python 13day--集合、字符串格式化
查看>>
20145240《Java程序设计》第二周学习总结
查看>>
Linux 配置mail发送邮件
查看>>
联合索引最左匹配
查看>>
Algs4-1.5.11实现加权quick-find算法
查看>>
flex布局教程
查看>>
c#学习5,处理异常
查看>>
HK 笔试面试
查看>>
Linux内存管理
查看>>
如何在阿里云里申请并使用免费https证书SSL、nginx下配置https证书
查看>>
Linux命令——set 和 unset
查看>>
Intent
查看>>
选择排序小结
查看>>
小小算法题
查看>>
webpack 多入口打包配置示例
查看>>
iOS--开发从入门到精通
查看>>
转:Scrapy(爬虫框架)入门教程
查看>>
sqool导出oracle数据
查看>>
演示使用Metasploit入侵Windows
查看>>
从我的客户谈营销公司怎样将创业企业做大的
查看>>