亚游,  至于“幻影线”无人机的应用方向,戴维斯暗示称,波音公司未来可能会将“幻影线”作为一个试验平台,测试美国海军的一系列无人隐形机与舰载机的发展。他说:“我们目前正在考虑,能否通过‘幻影线’来验证海军无人舰载机载监视和打击系统的一些功能。”而且,“幻影线”还被视为海军无人舰载机载监视和打击系统隐身飞机的“起点”。

第十项是为校园足球的发展做好全方位服务。2017年的主要工作包括:一是推动校园建立青少年足球俱乐部,在各地体育局或会员协会注册,并由体育局或会员协会负责提供具备资质的教练员,使喜爱并愿意参加足球活动的学生,在课余时间能够接受相对专业的足球训练和选拔。校园青少年足球俱乐部与各地青训中心接轨,为青训中心选拔输送接受系统专业训练的学生。二是建立教练员辅导团。组织具有丰富经验的教练团队,为校园足球服务,开展指导、培训和选拔工作。三是与教育部相关部门共同研究区域联赛的发展规划和实施方案,共同努力打造优秀后备人才的培养平台。四是提供教练员培训平台,为校园足球优秀教练员提供更多的进入各级选拔队执教和接受培训的机会。在农村养殖什么赚钱 “如果考量我们的息税折旧摊销前利润,这两年我们的业绩是呈现出一个健康良性的增长态势的。”刘良向记者出示了一张图表,按照图表数据,从2014年至今,观致汽车的销售数量和净收入增长幅度基本一致,而息税折旧摊销前利润以及净利润的表现都呈现出一年好于一年的趋势。

发布于 2018-03-24 05:54:51 | 164 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Spring Framework 开源j2ee框架

Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等


这篇文章主要介绍了Spring依赖注入的两种方式(根据实例详解),非常具有实用价值,需要的朋友可以参考下

1,Set注入    2,构造注入

Set方法注入:

原理:通过类的setter方法完成依赖关系的设置

name属性的取值依setter方法名而定,要求这个类里面这个对应的属性必须有setter方法。

Set方法注入时spring中配置文件:


<?xml version="1.0" encoding="UTF-8"?> 
<beans 
  xmlns="/www0b0aspringframework0b0aorg/schema/beans" 
  xmlns:xsi="/www0b0aw30b0aorg/2001/XMLSchema-instance" 
  xmlns:p="/www0b0aspringframework0b0aorg/schema/p" 
  xsi:schemaLocation="/www0b0aspringframework0b0aorg/schema/beans  
  /www0b0aspringframework0b0aorg/schema/beans/spring-beans-3.0.xsd"> 
 
  <bean id="car" class="org.spring01.Car"> 
    <constructor-arg value="奔驰"></constructor-arg> 
    <constructor-arg type="java.lang.String"> 
      <value>土豪金</value> 
    </constructor-arg> 
    <constructor-arg value="高级轿车"></constructor-arg> 
  </bean> 
   
  <bean id="person" class="org.spring01.Person"> 
    <property name="name" value="张三"></property> 
    <property name="age" value="11"></property> 
    <property name="car" ref="car"></property> 
  </bean> 
</beans>

定义Car类:


package org.spring01; 
 
public class Car { 
  private String name;/车名 
  private String color;/颜色 
  private String clas;/等级 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public String getColor() { 
    return color; 
  } 
  public void setColor(String color) { 
    this.color = color; 
  } 
  public String getClas() { 
    return clas; 
  } 
  public void setClas(String clas) { 
    this.clas = clas; 
  } 
  public Car(String name, String color, String clas) { 
    super(); 
    this.name = name; 
    this.color = color; 
    this.clas = clas; 
  } 
 
  public Car() { 
    super(); 
    /TODO Auto-generated constructor stub 
  } 
  @Override 
  public String toString() { 
    return "Car [name=" + name + ", color=" + color + ", clas=" + clas 
        + "]"; 
  } 
   
} 

定义Person类:


package org.spring01; 
 
public class Person { 
  private String name;/名字 
  private int age;/年龄 
  private Car car;/他的车 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public int getAge() { 
    return age; 
  } 
  public void setAge(int age) { 
    this.age = age; 
  } 
  public Car getCar() { 
    return car; 
  } 
  public void setCar(Car car) { 
    this.car = car; 
  } 
  public Person(String name, int age, Car car) { 
    super(); 
    this.name = name; 
    this.age = age; 
    this.car = car; 
  } 
  public Person() { 
    super(); 
    /TODO Auto-generated constructor stub 
  } 
  @Override 
  public String toString() { 
    return "Person [name=" + name + ", age=" + age + ", car=" + car + "]"; 
  } 
   
} 

测试类:


package org.spring01; 
 
import org.junit.Test; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
 
public class SpringTest{ 
    @Test 
    public void toGetPerson(){ 
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
      Person person = (Person) context.getBean("person"); 
      System.out.println(person); 
    } 
    @Test 
    public void toGetCar(){ 
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
      Car car = (Car) context.getBean("car"); 
      System.out.println(car); 
    }   
} 

使用单元测试(JUnit)测试toGetPerson()方法,结果为:


Person [name=张三, age=11, car=Car [name=奔驰, color=土豪金, clas=高级轿车]]

构造方法注入:

原理:通过构造函数完成依赖关系的设定

构造注入指的是在接受注入的类中,定义一个构造方法,并在构造方法的参数中定义需要注入的元素,其中,index表示构造方法中的参数索引(第一个参数索引为0)。

构造方法注入时spring中配置文件:


<?xml version="1.0" encoding="UTF-8"?> 
<beans 
  xmlns="/www0b0aspringframework0b0aorg/schema/beans" 
  xmlns:xsi="/www0b0aw30b0aorg/2001/XMLSchema-instance" 
  xmlns:p="/www0b0aspringframework0b0aorg/schema/p" 
  xsi:schemaLocation="/www0b0aspringframework0b0aorg/schema/beans  
  /www0b0aspringframework0b0aorg/schema/beans/spring-beans-3.0.xsd"> 
 
  <bean id="car" class="org.spring02.Car"> 
    <constructor-arg value="大众"></constructor-arg> 
    <constructor-arg type="java.lang.String"> 
      <value>白色</value> 
    </constructor-arg> 
    <constructor-arg value="中级轿车"></constructor-arg> 
  </bean> 
   
   
  <bean id="person" class="org.spring02.Person"> 
    <constructor-arg index="0" value="李四"></constructor-arg> 
    <constructor-arg index="1" value="23"></constructor-arg> 
    <constructor-arg index="2" ref="car"></constructor-arg> 
  </bean> 
</beans> 

定义Car类:


package org.spring02; 
 
public class Car { 
  private String name;/车名 
  private String color;/颜色 
  private String clas;/等级 
   
  public Car(String name, String color, String clas) { 
    super(); 
    this.name = name; 
    this.color = color; 
    this.clas = clas; 
  } 
 
  public Car() { 
    super(); 
    /TODO Auto-generated constructor stub 
  } 
  @Override 
  public String toString() { 
    return "Car [name=" + name + ", color=" + color + ", clas=" + clas 
        + "]"; 
  } 
   
} 

定义Person类:


package org.spring02; 
 
public class Person { 
  private String name;/名字 
  private int age;/年龄 
  private Car car;/他的车 
   
  public Person(String name, int age, Car car) { 
    super(); 
    this.name = name; 
    this.age = age; 
    this.car = car; 
  } 
  public Person() { 
    super(); 
    /TODO Auto-generated constructor stub 
  } 
  @Override 
  public String toString() { 
    return "Person [name=" + name + ", age=" + age + ", car=" + car + "]"; 
  } 
   
} 

测试类:


package org.spring02; 
 
import org.junit.Test; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
 
public class SpringTest{ 
    @Test 
    public void toGetPerson(){ 
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext01.xml"); 
      Person person = (Person) context.getBean("person"); 
      System.out.println(person); 
    } 
    @Test 
    public void toGetCar(){ 
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext01.xml"); 
      Car car = (Car) context.getBean("car"); 
      System.out.println(car); 
    } 
} 

使用单元测试(JUnit)测试toGetPerson()方法,结果为:


Person [name=李四, age=23, car=Car [name=大众, color=白色, clas=中级轿车]]

上面的例子都采用了单元测试的方法检测运行结果,需要导库: JUnit

Demo的大体结构:

我们可以看到,set方法和构造方法都可以设值成功, 实际开发中最常用到的是set方法设值。但这两种依赖注入的方式并没有绝对的好坏,只是使用的场合不同。

使用构造注入可以在构建对象的同时完成依赖关系到的建立,所以如果要建立的对象的关系很多,使用构造注入会在构造方法上留下很多参数,可读性极差,所以当对象的关系比较多的时候采用set方法注入。

使用set方法注入是通过类的setter方法完成依赖关系的设置的,所以不能保证相关的数据在执行时不被更改设定。所以如果想使一些数据变为只读或者私有,就要采用构造注入了。

建议采用以set注入为主,构造注入为辅的注入策略。对于依赖关系无须变化的注入,尽量采用构造注入;而其他的依赖关系的注入,则考虑采用set注入。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHPERZ。



相关阅读 :
亚游Spring依赖注入的两种方式(根据实例详解)
Spring依赖注入的三种方式小结
Spring依赖注入的三种方式小结
Spring依赖注入的三种方式小结
详解spring 配置的两种方式:JAVA配置和注解配置
Spring中属性注入的几种方式以及复杂属性的注入详解
详解Spring配置事务的五种方式
详解SpringMVC注解版前台向后台传值的两种方式
话说Spring Security权限管理(源码详解)
spring实例化javabean的三种方式分享
详解Spring中bean实例化的三种方式
详解Java的Spring框架中的事务管理方式
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 亚游 All Rights Reserved   冀ICP备14009818号  亚游  广告服务
纳达尔:高温下比赛威胁健康 很多人喜欢打晚场 开盘:特朗普宣扬贸易战 美股周五大幅低开 瑞典34岁长腿美女成网红 曾因个高体瘦被嘲笑(图) 前教授被指性侵女生致其自杀 北大:立即复核情况 俄副外长:已就俄记者在乌情况向乌外交部递交照会 隔夜要闻:美股收跌 金价创年内最大单周跌幅 加密货币交易所Coinbase等探索获取银行牌照可能性 英媒:是否脱欧如何脱欧?半数英国人想再投一次 澳门2月博彩收入增长5.7% 创13个月最小增幅 1月17日上市公司晚间公告速递 英媒:中国大规模投资建设促进非洲妇女地位提高 叙媒:政府军完全暂停东古塔杜马地区军事行动
三部门:对失信被执行人实施限制不动产交易惩戒 新华社:美加征关税 破坏过去发展起来的贸易体系 解放军奇袭攻台已不太可能 等待台军反扑是最佳战术 热身-U17国青女篮大胜克罗地亚 万济圆砍30+11 “港独”议员辱国旗被提案谴责:若通过即剥夺议席 律师蹭疫苗热点收30万打赏 账号被封钱取不出来 中国冬奥数大强项退步明显 武大靖虎口夺金解难堪 吉利李书福首次当选全国人大代表 建议规范网约车 身价两千亿李嘉诚卸任 近年套现千亿频频被传撤退 12连胜!西部第三开局爆发打丢对面季后赛希望 外媒:美若对华打贸易战 美国病人沦为输家 海口新建旅游厕所最高可奖补18万元 实行先建后奖
吴金贵要赢权健咬住第一集团 李晓明落选国青挺失落 俄罗斯两个月狂抛84%美债 国家公务员局局长傅兴国出任中央组织部副部长 纳德拉再造微软:如何重回第一阵营? 栗战书汪洋韩正分别参加全国人大会议代表团审议 B站递交IPO申请:拟融资4亿美元登陆纽交所 英草地网协展开性侵害调查 主席配合暂时停职 冬残奥会闭幕式中国演员彩排 展现自强不息给世界 中国企业参与乌克兰港口建设 1年中标2项疏浚项目 女生最吃香的十大职业 没钱怎么创业 我出钱谁愿意为我卖命 亩收益10万的种植品种 亚游