• JAVA_OA管理系统(三):Spring参数注入


    模块总述:

    分为五个模块:诸如基本值,注入Bean对象,注入集合,注入spring表达式,注入null或者空字符串。
    /**
     *  Java bean
     *   规范
     *   1 这个类必须有包
     *   2 必须继承  Serializable
     *   3 有无参的构造器
     *   4 有get set 方法
     *   
     *   注意:其实现在用注解的比较多,但是xml是最基本的。
     */



    一.注入基本值

    <value>元素可以通过字符串指定属性或者构造器的值,容器会将字符串从
    Java.lang.String类型转化为实际的属性或参数类型然后注入给bean


    <bean id="student" class="com.throne.Student" >
       <property name="name" value=“FontThrone”></property></span>
      <property name="age">
    <span style="white-space:pre">	</span><value>18<value>
    </property>
     </bean>

    private String name;
    	private String age;
    	public Student() {
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getAge() {
    		return age;
    	}
    	public void setAge(String age) {
    		this.age = age;
    	}

    String str="applicationContext.xml";
    		ApplicationContext ac=
    			new ClassPathXmlApplicationContext(str);
    		Student s=ac.getBean("student",Student.class);
    		System.out.println(s.getAge()+"
    "+s.getName());

    结果:
    18
    FontThrone

    二.注入Bean对象

    <bean id="student" class="com.lpc.entity.Student" >
       //交给容器管理,注册时,如果是Bean对象,要用ref引用
        <property name="book" ref="book"></property>
      </bean>
     
      <bean id="book" class="com.throne.Book">
         <property name="bookId" value="12"></property>
         <property name="bookName" value="平凡的世界"></property>
      </bean>



    <span style="white-space:pre">	</span>private Book book;
    	public Student() {
    	}
    	...
    	public Book getBook() {
    		return book;
    	}
    	
    	public void setBook( Book book) {
    		this.book = book;
    	}
    	

    //之前的重复部分(创建ApplicationContext等)省略掉
    System.out.println(s.getBook().getBookName());
    
    结果:
    <span style="white-space:pre">	</span>平凡的世界

    三.注入集合

    	<bean id="message" class="com.throne.entity.Message">
    	   <property name="list" ref="ppp">
    	   </property>
    	   <property name="set">
    	       <set>
    	          <value>张三</value>
    	          <value>李四</value>
    	          <value>王五</value>
    	       </set>
    	   </property>
    	   <property name="map">
    	       <map>
    	          <entry key="语文" value="80"></entry>
    	          <entry key="数学" value="100"></entry>
    	          <entry key="英语" value="60"></entry>
    	       </map>
    	   </property>
    
    	 <!--  
    	 1  采用引入的方式注入集合
                 a 先声明集合bean,然后采用引用的方式将这些bean注入给Message
                 使用<util>标签声明集合bean,然后在MessageBean下使用<property>标签引用这些集合bean。
             2  为什么要使用引入的方式
                引入的方式就是为了我们方便复用代码  !important  
                如果别的bean里面也要复用  那么就用它 
           -->
    	<util:list id="ppp">
    	          <value>兰州</value>
    	          <value>北京</value>
    	          <value>长沙</value>
    	</util:list> 



            private List<String> list;
    	private Set<String> set;
    	private Map<String,Object> map;
    	private Properties properties;
    //	注意导入的是until的包,而非sun的:import java.util.Properties;
    	public Message() {
    	}
    	public List<String> getList() {
    		return list;
    	}
    	public void setList(List<String> list) {
    		this.list = list;
    	}
    	public Set<String> getSet() {
    		return set;
    	}
    	public void setSet(Set<String> set) {
    		this.set = set;
    	}
    	public Map<String, Object> getMap() {
    		return map;
    	}
    	public void setMap(Map<String, Object> map) {
    		this.map = map;
    	}
    	public Properties getProperties() {
    		return properties;
    	}
    	public void setProperties(Properties properties) {
    		this.properties = properties;
    	}


                    Message m=ac.getBean("message",Message.class);
    		List<String> list=m.getList();
    		for(String ss:list){
    			System.out.println(ss);
    		}
    		
    		Set set=m.getSet();
    		Iterator<String> it=set.iterator();
    		while(it.hasNext()==true){
                    System.out.println(it.next());
                    System.out.println("11111");
        }


    结果:

    兰州
    北京
    长沙
    张三
    11111
    李四
    11111
    王五
    11111

    四.表达式注入

    		A a=ac.getBean("ddd",A.class);
    		System.out.println(a.getUser());
    		/*
    		 *  注入表达式
    	        Spring引入了一种表达式语言,在语法上与EL的语法很相似,用来读取一个bean中
    	  的属性。
    	  
    	  	xml配置:
    	  	<util:properties id="jdbc1"  location="classpath:db.properties"></util:properties>-->
    		<bean id="ddd" class="com.tanzhou.entity.A">
    		   <property name="user" value="#{jdbc1.user}"></property>
    		</bean>
    		
    		类:
    		public class A implements Serializable {
    		private String user;
    
    		public A() {
    
    		}
    
    		public String getUser() {
    			return user;
    		}
    
    		public void setUser(String user) {
    			this.user = user;
    		}
    		
    		执行:
    		A a=ac.getBean("ddd",A.class);	
    		System.out.println(a.getUser());
    		
    		 * */

    此时读取的是与配置的xml文件同一目录下的db.properties文件,它只有一句话的内容:user=scott

    五.注入null或者空字符串

    注入空值和字符串(了解内容)
         给一个属性注入字符串
        <property  name=“name” value=“”></property>
        注入空值
        <property  name=“name”><null/><property>







  • 相关阅读:
    Android Studio安装apk失败
    react-native获取屏幕尺寸
    Project Euler Problem 10
    Project Euler Problem9
    Project Euler Problem8
    Project Euler Problem7
    Project Euler Problem6
    《The One 团队》:第九次团队作业:BETA冲刺与团队项目验收
    《The One!团队》:BETA Scrum metting3
    《The One !团队》:BETA Scrum metting2
  • 原文地址:https://www.cnblogs.com/fonttian/p/7294865.html
Copyright © 2020-2023  润新知