Spring配置入门案例(配置文件方式)
2017-07-13 21:30
525 查看
1. IOC(控制反转)
什么是IOC
ioc控制反转,把对象的创建交给spring管理ioc操作两部分
(1)ioc的配置文件方式
(2)ioc的注解方法
ioc底层原理
ioc底层原理使用技术(1)xml配置文件
(2)dom4j解析xml
(3)工厂设计模式
(4)反射
原理
第一步:创建xml文件,配置要创建的对象
<bean id="user" class="cn.wang.ioc.User">
第二步:创建工厂类,使用dom4j解析配置文件,反射创建对象
//1.使用dom4j解析xml文件 //根据id值user,得到id值对应的class属性值 String classValue="class属性值"; //2.使用反射创建对象 Class clazz=Class.forName(classValue); //创建对象 User user=clazz.newInstance(); return user
ioc入门案例
第一步:导入jar包
做spring最基本功能是,导入Beans,Core,Context,SpEL四个核心jar包即可
第二步:创建类,在类里创建方法
public class User{ public void add(){ System.out.println("add()"); } }
第三步:创建spring配置文件,配置创建类
(1) spring的核心配置文件的名称和位置是不固定的,建议放在src目录下,官方建议文件名:applicationContext.xml(2)引入schema约束
<?xml version="1.0"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
(3) 配置创建类
<bean id="user" class="cn.wang.ioc.User"></bean>
第四步:测试对象的创建
public class TestIoc { @Test public void testPerson() { // 1.加载Spring配置文件 ApplicationContext context = new ClassPathXmlApplicationContext( "bean1.xml"); // 2.得到配置文件创建的对象 Person person = (Person) context.getBean("person"); System.out.println(person); } }
spring的bean管理(xml方式)
bean实例化方式
在spring里通过配置文件创建对象bean实例化的三种方式
第一种:使用类的无参构造方法创建(前提有无参构造)
<bean id="user" class="cn.wang.ioc.User"></bean>
第二种:使用静态工厂创建对象
(1)创建静态工厂类
//Person的静态工厂 public class PersonFactory { // 静态方法,返回Person对象 public static Person getInstance() { return new Person(); } }
(2)配置文件配置静态工厂
<bean id="person" class="cn.wang.property.PersonFactory" factory-method="getInstance"></bean>
第三种:使用实例工厂创建对象
(1)创建实例工厂类
//Person的实例工厂 public class PersonFactory { public Person getInstance() { return new Person(); } }
(2)配置文件配置实例工厂
<bean id="personFactory" class="cn.wang.property.PersonFactory"></bean> <bean id="person" factory-bean="personFactory" factory-method="getInstance"></bean>
bean标签常用属性
1. id属性
id属性址名称任意命名id属性值不包含特殊符号
根据id得到配置对象
2. class属性
创建对象所在类的全路径3. name属性
功能与id相同,但是可以包含特殊符号4. scope属性
(1) singtleton:默认值,单例Person p1 = (Person) context.getBean("person"); Person p2 = (Person) context.getBean("person");
多次调用返回同一对象
(2)prototype:多例,多次调用返回不同对象
(3)request:创建对象放到request域中
(4)session:创建对象方法哦session域中
(5)globalSession:创建对象放到globalSession域中
2. DI(依赖注入)
什么是DI
创建对象时,向类里的属性设置值属性注入的三种方式
(1)使用set方法注入
(2)使用有参构造注入
(3)使用接口注入
spring框架中支持前两种方式
(1)使用set方法注入
<bean id="person" class="cn.wang.property.Person"> <!--set方法注入属性 name属性值:类中定义的属性名称 value属性值:设置具体的值 --> <property name="pname" value="zs"></property> </bean>
(2)使用有参构造注入
public class Person { private String pname; public void setPname(String pname) { this.pname = pname; } }
<bean id="user" class="cn.wang.ioc.User"> <!--构造方法注入属性--> <constructor-arg name="pname" value="Tony"></constructor-arg> </bean>
(3)注入对象类型属性
1. 创建service和dao类
在service中得到dao
2. 具体实现过程
在service中把dao作为属性
生成dao的set方法
public class UserService { // 1.定义UserDao类型属性 private UserDao userDao; // 2.生成set方法 public void setUserDao(UserDao userDao) { this.userDao = userDao; } }
配置文件注入关系
<bean id="userDao" class="cn.wang.property.UserDao"> <property name="name" value="Tom"></property> </bean> <bean id="userService" class="cn.wang.property.UserService"> <!--name属性值:UserService类里的属性名称--> <!--ref属性:UserDao类配置bean标签中的id值--> <property name="userDao" ref="userDao"></property> </bean>
(4)p名称空间注入
(5)注入复杂类型属性
<!-- 注入复杂类型属性值 --> <!-- String pname; String[] arrs; List<String> list; Map<String, String> map; Properties props; --> <bean id="person" class="cn.wang.property.Person"> <property name="pname" value="zs"></property> <property name="arrs"> <list> <value>aaa</value> <value>bbb</value> <value>ccc</value> </list> </property> <property name="list"> <list> <value>qqq</value> <value>www</value> <value>eee</value> </list> </property> <property name="map"> <map> <entry key="001" value="Tom"></entry> <entry key="002" value="Amy"></entry> <entry key="003" value="Jim"></entry> </map> </property> <property name="props"> <props> <prop key="username">admin</prop> <prop key="passwprd">admin</prop> </props> </property> </bean>
3. IOC和DI区别
(1)IOC控制反转,把对象创建交给spring配置(2)DI依赖注入,向类里面属性注入值
(3)关系,依赖注入不能单独存在,需要在IOC基础上完成操作
相关文章推荐
- Spring入门之事务管理【一】XML配置文件方式
- Spring入门(配置文件方式)
- Spring入门案例 注解方式配置(一)
- Spring配置入门案例(注解方式 )
- spring整合mybatis完整案例(配置文件方式)
- 载入Spring配置文件的方式
- 加载spring配置文件的三种方式
- spring中读取xml配置文件、获取bean的几种方式
- spring的配置文件中bean的注入方式
- Spring整理12 -- 面对切面(AOP)2 -- 配置文件的方式实现AOP
- Spring之配置文件加载方式
- 用Spring配置文件或者注解方式实现AOP
- Spring配置资源文件的两种方式
- spring AOP实现(Annotation方式/静态文件配置方式)
- Spring中加载XML配置文件的方式
- spring的配置文件中bean的注入方式
- Spring加载多个配置文件的方式
- [原]spring学习笔记9.3-Spring对Aop的支持-配置文件的方式
- Spring AOP之配置文件实现方式
- Spring整理12 -- 面对切面(AOP)2 -- 配置文件的方式实现AOP