zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Java在linux环境下和windows环境下日期字符串显示不同
    PPT制作手机手指滑动效果
    linux segmentation fault记录
    Linux SDK之uClinux、Broadcom、Atheros、Realtek、Ralink、Marvell、Intel
    chrome保存网页为单个文件(mht格式)
    解决liblzo2.so缺失
    What is uClinux?
    linux(CentOS5.8)环境下搭建Radius
    去除快捷方式小箭头
    【转载】ssh(安全外壳协议)
  • 原文地址:https://www.cnblogs.com/wgbs25673578/p/5149773.html
Copyright © 2011-2022 走看看