Spring框架中对bean类不同类型属性的注入方式

来源:互联网 发布:js radio点击事件 编辑:程序博客网 时间:2024/05/05 05:52

1.简单类型:

假设有bean类Person;其中如下属性:

private String pname;private Integer page;private Double pss;private List<String> l;private Map<String, String> m;private Addr addr;private String sex;

简单类型可以直接注入,

<property name="pname"><value>wangwu</value></property>

2-list注入方式:

<property name="l"><list><value>qqq</value><value>ss</value></list></property>

3-map集合注入:

<property name="m"><map><entry key="111" value="233"></entry><entry key="sdd" value="fr"></entry></map></property>
4-引用类型的注入:

<bean id="addr" class="com.bean.Addr"><property name="aid" value="1" ></property><property name="aname" value="xian"></property></bean><bean id="p5" class="com.bean.Person"><property name="addr" ref="addr"></property></bean>
5-匿名内部bean: 不需要指定id属性

<property name="addr"><bean class="com.bean.Addr"><!--new addr() --><property name="name" value="beijing"/></bean></property>
6-值为null:
<property name="sex"><null></null></property>

7- <lisi>:特殊符号的注入:

<property name="pname"><value><![CDATA[<lisi>"=]]></value></property>
 8-自动注入:autowire属性
       1-byName:根据名字注入
       2-byType:根据类型注入

<bean id="dao1" class="com.bean2.Dao1"></bean><bean id="service1" class="com.bean2.Service1" autowire="byName"></bean><bean id="action1" class="com.bean2.Action1" autowire="byName"></bean>

<bean id="dao2" class="com.bean2.Dao1"></bean><bean id="service2" class="com.bean2.Service1"  autowire="byType" ></bean><bean id="action1" class="com.bean2.Action1" autowire="byType"></bean>

9-自动扫描注入


1-添加标签:<context:component-scan base-package="com.bean2"></context:component-scan>
          1-base-package:指定要扫描的包
          2-注意:需要导入:spring-aop-4.0.9.RELEASE.jar
       2-在对应包的类上添加注解:
          1-@Controller:修饰控制层
          2-@Service:修饰业务层
          3-@Repository:修饰持久层
          4-@Component:通用
       3-在需要依赖注入的属性上添加注解:@Autowired

具体实现:

(1)spring的主配置文件;

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans                          http://www.springframework.org/schema/beans/spring-beans-4.0.xsd                          http://www.springframework.org/schema/context                          http://www.springframework.org/schema/context/spring-context-4.0.xsd                          http://www.springframework.org/schema/mvc                          http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd                        http://www.springframework.org/schema/aop                         http://www.springframework.org/schema/aop/spring-aop-4.0.xsd                        http://www.springframework.org/schema/tx                         http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"><bean id="p" class="com.bean.Person"><!-- <property name="pname" value="lisi"></property> --><property name="pname"><value>wangwu</value></property></bean><bean id="p1" class="com.bean.Person"><constructor-arg index="0" value="zhangsan"></constructor-arg><constructor-arg index="1" value="12.0"></constructor-arg></bean><bean id="p2" class="com.bean.Person"><constructor-arg index="0" value="zhangsan" type="java.lang.String"></constructor-arg><constructor-arg index="1" value="24" type="java.lang.Integer"></constructor-arg></bean><bean id="p3" class="com.bean.Person"><property name="l"><list><value>qqq</value><value>ss</value></list></property></bean><bean id="p4" class="com.bean.Person"><property name="m"><map><entry key="111" value="233"></entry><entry key="sdd" value="fr"></entry></map></property></bean><bean id="addr" class="com.bean.Addr"><property name="aid" value="1" ></property><property name="aname" value="xian"></property></bean><bean id="p5" class="com.bean.Person"><property name="addr" ref="addr"></property></bean><bean id="p6" class="com.bean.Person"><property name="sex"><null></null></property></bean><bean id="p7" class="com.bean.Person"><property name="pname"><value><![CDATA[<lisi>"=]]></value></property></bean></beans>
测试类:

package com.test;import java.util.List;import java.util.Map;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bean.Addr;import com.bean.Person;public class PersonTest {public static void main(String[] args) {ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");Person p=(Person)ac.getBean("p");String name=p.getPname();System.out.println(name);System.out.println("----------------");Person p1=(Person)ac.getBean("p1");String name1=p1.getPname();Double pss1=p1.getPss();System.out.println(name1+","+p1.getPage()+","+pss1);System.out.println("----------------");Person p2=(Person)ac.getBean("p2");String name2=p2.getPname();Double pss2=p2.getPss();System.out.println(name1+","+p2.getPage()+","+pss2);System.out.println("----------------");Person p3=(Person)ac.getBean("p3");List<String> l=p3.getL();System.out.println(l.size());System.out.println("----------------");Person p4=(Person)ac.getBean("p4");Map<String, String> m=p4.getM();System.out.println(m.get("111"));System.out.println("----------------");Person p5=(Person)ac.getBean("p5");Addr addr=p5.getAddr();System.out.println(addr.getAname());System.out.println("----------------");Person p6=(Person)ac.getBean("p6");//p6.setSex("nam");System.out.println(p6.getSex()==null);System.out.println("----------------");Person p7=(Person)ac.getBean("p7");//p6.setSex("nam");System.out.println(p7.getPname());}}
运行结果:

测试自动注入:其中有3个类Action1,Dao1,service1

Action1类:

package com.bean2;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;@Controllerpublic class Action1 {@Autowiredprivate Service1 service1;public Service1 getService1() {return service1;}public void setService1(Service1 service1) {this.service1 = service1;}public void show(){System.out.println(service1);}}
Dao1类:

package com.bean2;import org.springframework.stereotype.Repository;@Repositorypublic class Dao1 {}
Service1类:

package com.bean2;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class Service1 {@Autowiredprivate Dao1 dao1;public Dao1 getDao1() {return dao1;}public void setDao1(Dao1 dao1) {this.dao1 = dao1;}public void show(){System.out.println(dao1);}}
测试类:

package com.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bean2.Action1;import com.bean2.Dao1;import com.bean2.Service1;public class Test3 {public static void main(String[] args) {ApplicationContext ac=new ClassPathXmlApplicationContext("beans3.xml");Action1 action=(Action1)ac.getBean(Action1.class);action.show();/*Dao1 dao=(Dao1)ac.getBean(Dao1.class);Service1 service=(Service1)ac.getBean(Service1.class);*/action.getService1().show();System.out.println(action);/*System.out.println(service);System.out.println(dao);*/}}
运行结果:


有生成类;

原创粉丝点击