Spring IOC

来源:互联网 发布:java 复杂网络软件包 编辑:程序博客网 时间:2024/06/06 19:56

DI–Dependency injection依赖注入
控制反转 Inversion of Control

ioc,配置改动,依赖注入,提到容器时基本上都是ioc容器
好莱坞原则:你不用来找我(ioc),我会自己来找你
现在用的都是设值注入(set)

Simple Object

bean就是拥有唯一名称的简单对象

pojo

Plain(简朴)old java Objects 简单的Java对象
即普通Javabean
可以理解为简单的实体(entity)类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法,最简单的对象,不能有复杂的东西

vo

value object 值对象

po

persistant obj 持久对象(可理解为eneity)

DTO

DATA TREANSFER OBJECT 数据传输对象
以前被称为值对象(VO,value object),作用仅在于在应用程序的各个子系统间传输数据,在表现层展示等

dao

data access object 数据访问对象(即dao)

Bean 具有唯一id的simple object
由ioc管理,与对象一一对应
由BeanDefinition对象表示,包含:
全限定类名:通常即实际实现类
创建模式
scope=”prototype”(原型模式
Bean属性

org.springframework.beans.factory.BeanFactory==ioc容器的实际代表者,尽可能晚的初始化BEAN,避免高内存

BeanFactory

ApplicationContext

ApplicationContext context = new ClassPathXmlApplicationContext(                "applicationContext.xml");//类路径里面找,配置文件可以有多个,甚至是数组{?.xml,!.xml...},有利于团队各写各的配置,一句话加载进来(Student) context.getBean("student");               

继承了BeanFactory接口,尽可能早的初始化BEAN,在自身被实例化时一次完成所有BEAN的创建,会检验正确性,不产生运行时BEAN装配错误,beanfactory会

ApplicationContext

资源获取:

资源获取

依赖注入的方式:

1.设值注入(属性注入)

public class Student {     private String message;     public String getMessage() {           return message;     }     public void setMessage(String message) {           this.message = message;     }}

注入null:

<property name="state">    <null/></property>

空字符串:

<value></value>

引用类型:

<property name="state" ref="classes"/>

后面这个是某个bean的id

<bean id="student" class="com.neusoft.entity.Student"><!-- 默认是单例模式,id可以随便叫 bean就是拥有唯一名称的简单对象 若加上scope="prototype"(原型模式,及每次生成的都是新的),则获取的会是不同的对象 --><property name="message" value="hello spring"></property>     </bean>

2.构造注入

     public Person(String sname, String grade) {           this.sname = sname;           this.grade = grade;     }
     <bean id="person" class="com.neusoft.dao.Person">           <constructor-arg index="0"><!-- CA:构造方法注入 index指明注入到第几个参数 一般还是用设值注入 -->                <value>jack</value>           </constructor-arg>           <constructor-arg>                <value>二年级</value>           </constructor-arg>     </bean>

Set集合注入,List的注入即把set改成list

                <set><!-- 集合的注入 如果值有重复的话会省略 -->                     <value>beijing</value>                     <value>shanghai</value>                     <ref bean="person"></ref><!-- 非基础属性的注入一定要用ref!!! -->                </set>

map注入

                <map><!-- map中注入 -->                     <entry key="beijing" value="北京"></entry>                     <entry key="gz" value="广州"></entry>                </map>

property注入

主要用来读取Java中的*.properties(俗称属性文件,一般用来保存其他软件的配置信息,如log4j的开源项目,jdbc的配置信息.jdbc.properties

private Properties properties = new Properties();    // jdbc.url(键)=jdbc:mysql:MySqlDriver(值) ,properties是hashtable的子类,是键值对的形式
<props>     <prop key="jdbc">mysql</prop>     <prop key="name">value</prop></props>

属性编辑器

属性编辑器

实例化bean

这里写图片描述

懒加载:

<bean id="lazy" class="Example" lazy.init="true">

默认lazy模式:

<beans default-lazy-init="true">

beanFactory生命周期

beanFactory生命周期

原创粉丝点击