今天接触了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. 9.MVC模式 -- 改造源代码

    一.MVC设计模式 软件可以认为有 Model View Controller 来组成 MVC设计模式 要求这三部分 应该尽量独立 互不干扰 使程序结构清晰  便于开发和维护 二.JAVAEE经典三层 ...

  2. 自己写的 读写 ini 配置文件类

    /// <summary> /// 不调用系统API 读写 ini 配置文件 /// </summary> public class RW_ini { #region ==== ...

  3. 解决provisional headers are shown的过程

    前言 学习Angular时写了一个音乐播放器oschina地址github地址为了兼容android chrome,参考了这篇文章; 在数据读取中要中断的时候,可以把audio.src设为null,并 ...

  4. 【Gearman学习笔记】分布式处理入门

    1.首先,确保你已经安装了gearmand环境并且语言绑定(language binding)已经生效. 2.涉及到的各个部分: ServerThe server, gearmand, will co ...

  5. vlc 网页插件的 使用与控制 API http://www.xuebuyuan.com/2224602.html

    不知道vlc 是什么的请百度一下.. vlc 提供了ie浏览器的activeX插件和火狐或者chrome的插件,基本上覆盖了所有浏览器,所以有复杂解码需求的情况下用vlc来解决网页播放视频,也是一种没 ...

  6. C# 获取物理网卡Mac地址

    // <summary> /// 获取网卡物理地址 /// </summary> /// <returns></returns> public stat ...

  7. docker容器修改时区(java应用log信息与标准容器时间有八个小时时间差)

    在docker容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时时间差- 因为docker容器的原生时区为0时区,为了和国内时区保持一致,需要把容器时区调为东八 ...

  8. CSS border边框属性教程(color style)

    CSS 边框即CSS border-border边框样式颜色.边框样式.边框宽度的语法结构与应用案例教程篇 一.CSS 边框基础知识 CSS 边框即CSS border是控制对象的边框边线宽度.颜色. ...

  9. python中发布订阅和主从配置

    发布订阅 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的 ...

  10. YUM软件包额外扩展了解项

    5.YUM配置文件 yum的配置一般有两种方式: 一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下增加.repo文件 [root@xuliang ...