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

  今天接触了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
时间: 2024-10-07 10:10:41

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

实体类之间属性对比的方法

分享一个实体类之间属性对比的方法 方法用途:对实体类的属性进行修改操作:如果当前修改操作与原先的实体类属性值一样则返回为true,无需进行修改操作:反之则进行修改操作: 参考连接:https://www.cnblogs.com/mollie-x/p/10569286.html import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import j

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

面向对象 类是由属性和方法组成 类是所有创建对象的模板 实例变量有默认值 实例变量至少在本类范围中有效 实例变量与局部变量冲突时,局部变量优先 类中方法定义类似于函数定义 修饰符 返回值类型 方法名(参数1,参数2) 异常{ 方法体 } 方法重载 参数个数不同 参数类型不同 参数类型相同但是顺序不同 传入参数的不同自动选取相应方法:典型例子system.out.println(整形,字符串等); 构造方法 1.构造方法无返回值 2.不定义的情况下,有默认的空构造方法 3.在对象构造时,被自动调用

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

问题:就是把从solr搜索出来的结果转成我们想要的实体类对象,很常用的情景. 1.使用@Field注解 @Field这个注解放到实体类的属性[字段]中,例如下面 1 public class User{ 2 /** 3 * id 4 */ 5 @Field 6 private String id; 7 /** 8 * 用户名 9 */ 10 @Field 11 private String userName; 12 /** 13 * 密码 14 */ 15 @Field 16 private S

Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)

目录 1.说明 2.代码 关于作者 @ 1.说明 python中属性:类属性,实例属性 方法:类方法,实例方法,静态方法 想修改类属性,只能是类方法,因为只有类方法把cls(类)传入数据里面 静态方法也就是个普通的方法,为了方便而已 实例方法,不能通过类来直接调用,要调用也可以self = 对象名 具体下面 2.代码 class Provice(object): #类属性 country = "china" def __init__(self,name): #实例属性 self.nam

判断一个对象是不是某个类的实例有哪些方法

1.instanceof属于二元操作符,用法:obj instanceof Object,注意泛型类不能用instanceof进行操作,因为instanceof是运行时操作,而在运行时不存在泛型 2.class属性判断,用法:obj.getClass()==Object.class,个人感觉用equals()判断会好点 应该还有,但是想不出 原文地址:https://www.cnblogs.com/yemingqianduzou/p/9066070.html

简单实体类和xml文件的相互转换

最近写一个题目,要求将一组员工实体类转换成xml文件,或将xml文件转换成一组实体类.题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换.于是今天下午立马动手 试了下,做了个简单的模型,可以将简单的实体类和xml文件进行相互转换,但对实体类的属性类型有限制,目前只支持String, Integer, Double三种类型.但是后面可以扩展. 我的大概思路是这样的,只要能拿到实体类的类型信息,我就能拿到实体类的全部字段名称和类型,拼属性的set和get方法更是简单明了,这时

javabean 实体类的转换

1. spring 工具类 BeanUtils.copyProperties 简单的实体类之间的转换,不能copy Date类型,利用java反射的原理来进行属性的复制.如果两个实体的类的里面嵌套实体类的类型不一样,copy后实体类的变为原实体类的类型,当在此使用目标实体类的时候会发生类型的转化异常.2. MapStruct是一个代码生成器的工具类,简化了不同的Java Bean之间映射的处理,所以映射指的就是从一个实体变化成一个实体.在实际项目中,我们经常会将PO转DTO.DTO转PO等一些实

实体类,数据访问类.字符串攻击.防攻击

程序分三层:界面层.业务逻辑层.数据访问层 这里主要操作的是数据访问层,数据访问层又分为: 1.实体类 2.数据访问类 存放位置:APP_Code文件中 一.实体类 最简单的封装把数据库的表名变成类的类名把数据库的每一个列,变为实体类中的成员变量和属性列名与属性名一致 有几行就有几个实体类 这是一个简单的实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namesp

2017-4-20实体类,数据访问类.字符串攻击.防攻击

程序分三层:界面层.业务逻辑层.数据访问层 这里主要操作的是数据访问层,数据访问层又分为: 1.实体类 2.数据访问类 存放位置:APP_Code文件中 一.实体类 最简单的封装把数据库的表名变成类的类名把数据库的每一个列,变为实体类中的成员变量和属性列名与属性名一致 有几行就有几个实体类 这是一个简单的实体类:  实体类 二.数据访问类 将某个表的数据库操作写成一个一个方法,放入到此类中供外部调用 这是一个数据访问类:  数据访问类 三.字符串攻击,防攻击 字符串攻击: 主要利用获取需用户输入