Spring之Spring Bean

IOC          inversion of Controller 控制反转。

由我们自己实例化的对象交给spring容器来实始化。这时对象的初始化的权利就会反转。



DI                dependency injection 依赖注入

在spring框架负责创建Bean对象时,动态将依赖对象注入到Bean组件



IOC/DI区别

                IOC 控制反转,是指对象实例化权利由spring容器来管理

                DI 依赖注入 在spring创建对象的过程中,对象所依赖的属性通过配置注入对象中。





Spring Bean基本步骤



1.导入相关jar包



        spring-beans-4.2.4.RELEASE.jar

        spring-context-4.2.4.RELEASE.jar

        spring-core-4.2.4.RELEASE.jar

        spring-expression-4.2.4.RELEASE.jar





2.导入相关日志包



        commons-logging-1.2.jar

        log4j-1.2.16.jar

        

3.在项目的src目录下创建applicationContext.xml文件



        <?xml version="1.0" encoding="UTF-8"?>

        <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"

                        "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

        <beans>

                <bean id="userService" class="com.b3a4a.ioc.UserServiceImpl"> 

                        <!– 通过依赖注入将cnB3a4a这个值注到实例对象的info属性中 –>

                        <property name="info" value="cnB3a4a"></property> 

                </bean>

        </beans>

        

        注意:

        

        <bean></bean>标签注意事项

        

                在开发中可以使用id或name 

                id它遵守xml规范,名称中不能包含特殊符号                 

                name它是为了更好的扩展,在name中可以包含一些特殊符号,例如"_"





4.创建接口(IUserService)和实现类(UserServiceImpl)



        public interface IUserService {

                public void hello();

        }





        public class UserServiceImpl implements IUserService {

                private String info;

                @Override

                public void hello() {

                        System.out.println("hello " + info);

                }

                

                //省略get/set方法

                ……

        }



5.获取对象实例



        @Test

        public void test(){

                ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

                IUserService service = (IUserService) applicationContext.getBean("userService");

                service.sayHello();

        }





上面就是一个基本的使用步骤了,但是这个只是一个最基本的入门,那么接下来咱们则开始给大家一点点的引入



首先,大家需要明确一个问题,那就是我们这个Spring Bean这块的作用是什么?

很简单,就是我们相关对象以前是通过自己new 对象的形式来创建的,现在呢,则改为让框架统一对咱们的对象进行管理.所以咱们先来看下在Spring中,我们的对象究竟是有谁来创建的.当然.说简单点,其实底层实现起来是通过 解析xml配置文件+反射+工厂模式来实现的, 而我们在使用的过程中,我们真正需要了解的就是所谓的对象是通过哪些工厂来实现的呢?



1)BeanFactory

2)ApplicationContext

3)ClassPathXmlApplicationContext

4)FileSystemXmlApplicationContext

5)WebApplicationContext



他们之间的关系

BeanFactory(根接口)        –>                ApplicationContext(子接口)        

至于ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,WebApplicationContext则是一个个具体的实现类,当然这里先和大家说声,真实开发中都是使用

WebApplicationContext来实例化咱们的spring bean容器,但是这个工厂我们不需要自己去创建,通过一些配置,我们就能让这个对象在咱们项目启动的时候自动初始化~





创建工厂的方式

        

    a)通过BeanFactory来获取

          BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));

    b)通过ClassPathXmlApplicationContext来获取

         ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");

    c)通过FileSystemXmlApplicationContext来获取

         ApplicationContext factory = new FileSystemXmlApplicationContext("src/applicationContext.xml");



通过工厂获取实例对象



                IBean bean = (IBean) factory.getBean("bean");



但是这里有一个小小的知识点需要告诉大家,BeanFactory是延迟加载,ApplicationContext是加载配置文件的时候加载



ok.那么到此为止,咱们对Springbean这块有了个基本认识,下次的话就给大家去聊下如何玩转ioc和di(xml和注解的方式)

javaEE培训学院

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/253286.html

(0)
上一篇 2022年5月7日
下一篇 2022年5月7日

相关推荐

发表回复

登录后才能评论