今天接触了Spring的初步用法, 感觉跟实例化实体类没啥区别, 像这种简单的代码还不如直接实例化来的方便, 这样使用Spring的话总共需要三个文件

  第一个当然是一个实体类了, 定义好属性, getter和setter方法, 别忘了构造一个无参的构造方法.

public class HelloWorld {
private String mingzi;
private String dizhi;
private User user;
public void sayHello() {
System.out.println("Hello "+mingzi+user);
}
//属性mingzi的set和get方法
public void setMingzi(String mingzi) {
System.out.println("设置mingzi = "+mingzi);
this.mingzi = mingzi;
}
public String getMingzi() {
return mingzi;
}
//再定义一个属性
public String getDizhi() {
return dizhi;
}
public void setDizhi(String dizhi) {
System.out.println("设置dizhi = "+dizhi);
this.dizhi = dizhi;
}
//定义属性user的get和set方法
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}

  再一个就是一个main方法的入口, 来调用写好的实体类.

import org.springframework.context.ApplicationContext;//第1行的引用
import org.springframework.context.support.ClassPathXmlApplicationContext;//第1行的引用 public class Main {
public static void main(String[] args) {
//通过Spring的方式调用方法
//构建容器 构建容器的时候就调用了set方法
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");//第1行
//从容器中获取javaBean的实例 控制反转IOC
HelloWorld hw1 = (HelloWorld)ac.getBean("hw");
hw1.sayHello();
}
}

  剩下的一个也是最重要的一个文件, xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- 将一个类的定义放在这边 -->
<bean id="hw" class="com.hanqi.HelloWorld">
<!-- 这里实现的依赖注入(DI) -->
<property name="dizhi" value="山东淄博"></property>
<property name="mingzi" value="小强"></property>
<property name="user" ref="user1"></property>
</bean>
<bean id="user1" class="com.hanqi.User">
<!-- 构造器注入, 如果数据类型是唯一的, 顺序可以无所谓 -->
<!-- 可以添加type或者index="序号"来匹配顺序号 -->
<constructor-arg value="12" index="2"></constructor-arg>
<constructor-arg value="汉族" index="3"></constructor-arg>
<constructor-arg value="小明" index="0"></constructor-arg>
<constructor-arg value="男" index="1"></constructor-arg>
</bean>
</beans>

  定义一个User类

public class User {
private String age;
private String sex;
private String minz;
private String name; public User() {} public User(String name, String sex, String age, String minz) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.minz = minz;
} 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;
} public String getMinz() {
return minz;
} public void setMinz(String minz) {
this.minz = minz;
} public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + ", minz=" + minz + "]";
}
}

这里主要说明以下几点:

    一, <property>属性标签的设置, name=""的值, 必须为set方法后面的方法名, 一个字母也不能错, 但是不包括大小写, 也就是说, 方法名可以有大写字母, 到了name=""属性里面, 就无所谓了, 只要你字母写对了就OK

    二, 当使用构造器进行属性注入的时候

      <constructor-arg value="12" index="2"></constructor-arg>
      <constructor-arg value="汉族" index="3"></constructor-arg>
      <constructor-arg value="小明" index="0"></constructor-arg>
      <constructor-arg value="男" index="1"></constructor-arg>

  当然可以像上面一样定义一个index="", 但是注意, 序号是从0开始的, 第一个属性的序号是0

  如果没有index, 构造器自己也能识别每个属性的赋值, 但是这里要保持与构造方法的顺序一致, 即带着参数的那个构造方法

    public User(String name, String sex, String age, String minz) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.minz = minz;
}

这里这个构造方法的参数的顺序是name, sex, age, minz(为了方便测试, 我都设置成了String类型的), 所以构造器的顺序也应当这样写

<constructor-arg value="小明"></constructor-arg>  →  String name
<constructor-arg value="男"></constructor-arg>  →  String sex
<constructor-arg value="12"></constructor-arg>  →  String age
<constructor-arg value="汉族"></constructor-arg>  →  String minz

Spring简单获得实体类的实例, 使用ApplicationContext()方法的几点注意事项的更多相关文章

  1. PDF.NET数据开发框架实体类操作实例

    PDF.NET数据开发框架实体类操作实例(MySQL)的姊妹篇,两者使用了同一个测试程序,不同的只是使用的类库和数据库不同,下面说说具体的使用过程. 1,首先在App.config文件中配置数据库连接 ...

  2. spring框架对于实体类复杂属性注入xml文件的配置

    spring框架是javaWeb项目中至关重要的一个框架,大多web 项目在工作层次上分为持久层.服务层.控制层.持久层(dao.mapper)用于连接数据库,完成项目与数据库中数据的传递:服务层(s ...

  3. idea 从数据库快速生成Spring Data JPA实体类

    第一步,调出 Persistence 窗口. File—>Project Structure—>model—> + —>JPA 第二步:打开 Persistence窗口 配置 ...

  4. java实体类如果不重写toString方法,会如何?

    先认识一下Object Object 类的 toString 方法 返回一个字符串,该字符串由类名(对象是该类的一个实例).at 标记符“@”和此对象哈希码的无符号十六进制表示组成.换句话说,该方法返 ...

  5. java 获取实体类对象属性值的方法

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...

  6. 面向对象(类,实例变量,方法定义,方法重载,构造方法,this,string类)

    面向对象 类是由属性和方法组成 类是所有创建对象的模板 实例变量有默认值 实例变量至少在本类范围中有效 实例变量与局部变量冲突时,局部变量优先 类中方法定义类似于函数定义 修饰符 返回值类型 方法名( ...

  7. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  8. solr搜索结果转实体类对象的两种方法

    问题:就是把从solr搜索出来的结果转成我们想要的实体类对象,很常用的情景. 1.使用@Field注解 @Field这个注解放到实体类的属性[字段]中,例如下面 public class User{ ...

  9. Spring中为什么实体类不用注入

    要理解为什么不用注入,首先就清楚注入的目的是什么?如果不注入,在程序中要使用某个类对象的方法,则需要去new一个对象.然后我们调用其中的方法,众所周知"程序=算法+数据".不失一般 ...

随机推荐

  1. selenium操作隐藏的元素 (下拉框类型)

    有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: Python 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操 ...

  2. COMMON INTERVIEW QUESTIONS

    1. What do you see yourself doing five years from now? 2. What motivates you to put forth your great ...

  3. eterm和easyfare的官网地址

    里面有eterm下载和eterm文档资料 运价软件easyfare和easyfare的文档. https://www.eterm.com.cn/caci/eterm/index-cn.jsp http ...

  4. Goroutine(协程)为何能处理大并发?

    简单来说:协程十分轻量,可以在一个进程中执行有数以十万计的协程,依旧保持高性能. 进程.线程.协程的关系和区别: 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度. 线程拥有自己独 ...

  5. OpenGL chapter2

    opengl: 图形硬件的一种软件接口:最大的优点:它的速度快于光线追踪器或软件渲染引擎. GLUT: AUX是OpenGL辅助函数库. 数据类型: GLboolean 位宽:1 GLbyte 8 G ...

  6. iOS线程开发小结

    在iOS开发线程操作时,一般方法名决定是否开启新线程(async,sync),队列类型(全局队列,串行队列)决定开启多少条线程 1.快速线程调用 *开启后台线程执行任务 [self performSe ...

  7. centos6性能监控软件

    常用软件在此下载 http://rpm.pbone.net/ http://pkgs.org/ collectl 显示cpu\disk\network的实时信息http://dl.fedoraproj ...

  8. 编译器错误消息: CS0016: 未能写入输出文件“c:/Windows/Microsoft.NET/Framework/v4.0.50727/Temporary ASP.NET Files/root .... 拒绝访问。

    此问题困扰良久,得终极解决方案 环境:windows 2008 server r2 + iis7 + .net framework4.5 解决:1. 错误信息中包含的目录“c:/Windows/Mic ...

  9. leetcode949

    public class Solution { public string LargestTimeFromDigits(int[] A) { ); ; ; foreach (var nums in l ...

  10. leetcode453

    public class Solution { public int MinMoves(int[] nums) { var list = nums.OrderBy(x => x).ToList( ...