1、setter注入方式
(1)首先在你要创建的对象中添加对应属性的set方法如图:
(2)在spring配置文件中进行配置相关的属性。
-- 1、在spring配置文件中,使用bean标签,标签里面添加对应的属性,就可以实现对象的创建。
-- 2、在bean里面有很多的属性
id :唯一标识
class : 要创建的对象的全路径,默认是执行无参构造方法来创建对象,后面来讲解如何创建有参构
<bean id = "book" class="book类的全路径">
-- name :要创建的类中的属性
-- value :给属性注入的具体值
<property name = "bname" value = "红楼"></property>
<property name = "bauthor" value= "老曹"></property> -- 这里是给基本的属性赋值 和string 不是集合
</bean>
-- 以下是简化setter的注入 -- p名称的注入
1、在配置文件中添加p名称空间
<beans xmlns:p="http://www.springframework.org/schema/p">
2、进行属性注入
<bean id = "book" class="book类的全路径" p:banme = "value" p:author = "value">
</bean>
复制代码
2、通过有参构造完成
(1)创建类、定义属性、创建有参构造方法
(2)配置xml文件
<bean id = "order" class = "order类全路径">
<constructor-org name = "属性名1" value= "属性值"></constructor-org>
<constructor-org name = "属性名2" value= "属性值"></constructor-org>
</bean>
复制代码
3、注入其他属性(字面量,集合,对象)
(1)字面量
①null值
<property name = "address"> -- 如果想给address属性赋值为null
<null/>
</property>
复制代码
②属性中包含特殊符号(使用转义或者CDATA)
<property name = "address"> -- 如果想给address属性赋值为null
<value><![CDATA[nanjing]]></value>
</property>
复制代码
(2)注入外部bean
①创建两个类 UserService和UserDao 此UserService
②配置xml文件
-- 这里需要创建两个对象 UserService 和UserDao 因为UserDao为接口,所以用他的实现类
<bean id = "userService" calss = "userService类的全路径">
<property name = "userDao" ref = "userDaoImpl"></property>
</bean>
<bean id = "userDaoImpl" calss = "userDaoImpl类的全路径">
</bean>
复制代码
(3)注入内部bean和级联赋值
<bean id = "userService" class="com.glp.UserService">
<property name = "userDao">
<bean id = "userDao" class="com.glp.UserDao">
<property name = "username" value="glp"></property>
</bean>
</property>
</bean>
复制代码
级联赋值(和外部Bean有些区别,在引入外部Bean的同时,给外部Bean设置了属性。)
<bean id = "userService" class="com.glp.UserService">
<property name = "userDao" ref="userDao"></property>
</bean>
<bean id = "userDao" class="com.glp.UserDao">
<property name = "username" value="glp"></property>
</bean>
复制代码
(4)注入集合
①注入数组类型属性
<bean id = "stu" class = "要创建的类的全路径">
<property name = "course为数组类型">
<array>
<value>java</value>
<value>oracle</value>
</array>
</property>
</bean>
复制代码
②注入list集合
<bean id = "stu" class = "要创建的类的全路径">
<property name = "course为list类型">
<list>
<value>java</value>
<value>oracle</value>
</list>
</property>
</bean>
复制代码
③注入map集合 类型
<bean id = "stu" class = "要创建的类的全路径">
<property name = "course为map类型">
<map>
<entry key = "" value = ""></entry>
<entry key = "" value = ""></entry>
</map>
</property>
</bean>
复制代码
④set集合
<bean id = "stu" class = "要创建的类的全路径">
<property name = "course为list类型">
<set>
<value>java</value>
<value>oracle</value>
</set>
</property>
</bean>
复制代码
4、两个细节
1、集合中的类型是对象
-- 其实就和前面引入对象的差不多的,要学会举一反三哦
<bean id = "stu" class = "要创建的类的全路径">
<property name = "course为list类型">
<list>
<ref bean = "course1"></value>
<ref bean = ""></value>
</list>
</property>
</bean>
<bean id = "course1" class = "要创建的类的全路径">
<property name = "" value = ""></property>
</bean>
复制代码
2、使集合可以供别的类使用
<util:list id = "bookList">
<value>1</value>
<value>2</value>
<value>3</value>
</util>
<bean id = "course1" class = "要创建的类的全路径">
<property name = "list" ref= "bookList"></property>
</bean>
复制代码
5、普通bean和工厂bean
1、普通: 定义的是什么类型,返回的就是什么类型
就是在xml文件中<bean class=""></bean> class类型,定义的什么,当你在使用getBean调用的时候它生成的就是什么类型的。
复制代码
2、工厂: 定义的返回的是不一样的
1、创建类,让这个类作为工厂bean,时间接口FactoryBean
2、实现接口里面的方法,在实现方法中定义返回bean的类型,
这里返回的是Course
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END