zoukankan      html  css  js  c++  java
  • Spring框架总结(三)

    SpringIOC容器

    一、创建对象

    SpringIOC容器,是spring核心内容。

    作用: 创建对象 & 处理对象的依赖关系

    IOC容器创建对象:

    创建对象, 有几种方式:

    1) 调用无参数构造器

    2) 带参数构造器

    3) 工厂创建对象

                       工厂类,静态方法创建对象

                       工厂类,非静态方法创建对象

    事例一:构造函数是无参

    创建一个无参构造函数

    需要三个部分

    User

     1 public class User {
     2 
     3     public User() {
     4         System.out.println("======不带参构造器=========");
     5     }
     6 
     7     public User(String userId, String username) {
     8         System.out.println("======带参构造器=========");
     9         this.userId = userId;
    10         this.username = username;
    11     }
    12 
    13     public User(String userId, String username, String string) {
    14         System.out.println("======带参构造器2=========");
    15         this.userId = userId;
    16         this.username = username;
    17     }
    18 
    19     private String userId;
    20     private String username;
    21 
    22     public String getUserId() {
    23         return userId;
    24     }
    25 
    26     public void setUserId(String userId) {
    27         this.userId = userId;
    28     }
    29 
    30     public String getUsername() {
    31         return username;
    32     }
    33 
    34     public void setUsername(String username) {
    35         this.username = username;
    36     }
    37 
    38     @Override
    39     public String toString() {
    40         return "User [userId=" + userId + ", username=" + username + "]";
    41     }
    42 
    43 }

    bean.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xsi:schemaLocation="
     6         http://www.springframework.org/schema/beans
     7         http://www.springframework.org/schema/beans/spring-beans.xsd
     8         http://www.springframework.org/schema/context
     9         http://www.springframework.org/schema/context/spring-context.xsd">
    10 
    11 
    12     <!-- 无参构造函数的 -->
    13     <bean id="user1" class="com.liuyang.constructor.User">
    14     </bean>
    15 </beans>

    测试类

     1 public class App {
     2 
     3     ApplicationContext aContext = new ClassPathXmlApplicationContext(
     4             "com/liuyang/constructor/beans.xml");
     5 
     6     @Test
     7     public void test() {
     8         User user = (User) aContext.getBean("user");
     9         
    10         System.out.println(user);
    11     }
    12 }

    事例二:构造函数是带参

    更改bean.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" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 带构造函数的 -->
        <bean id="user1" class="com.liuyang.constructor.User">
            <constructor-arg value="100" index="0" type="java.lang.String"></constructor-arg>
            <constructor-arg value="Jack" index="1" type="java.lang.String"></constructor-arg>
    </bean>
    </beans>

    事例三:外部引用,定义一个字符串外部引入类中(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" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    <!--定义一个字符串类型 相当于new String("whiteRabbit")-->
    <bean id="str" class="java.lang.String">
            <constructor-arg value="whiteRabbit"></constructor-arg>
        </bean>
    <bean id="user1" class="com.liuyang.constructor.User">
            <constructor-arg value="100" index="0" type="java.lang.String"></constructor-arg>
            <constructor-arg value="Jack" index="1" type="java.lang.String"></constructor-arg>
            <constructor-arg index="2" type="java.lang.String"
                ref="str"></constructor-arg>
    
        </bean>
    </beans>

    事例四:向类中插入值

    更改bean.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" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 向对象中传值 -->
        <bean id="str" class="java.lang.String">
            <constructor-arg value="whiteRabbit"></constructor-arg>
        </bean>
        <bean id="user" class="com.liuyang.constructor.User">
            <constructor-arg index="0" type="java.lang.String"
                value="100"></constructor-arg>
            <constructor-arg index="1" type="java.lang.String"
                ref="str"></constructor-arg>
        </bean>
    </beans>

    事例五:工厂创建对象和静态调用

    1、user不变

    2、创建类ObjectFactory

     1 public class ObjectFactory {
     2 
     3     public User getInstance() {
     4 
     5         return new User("100", "=====实例化一个对象=========");
     6 
     7     }
     8 
     9     public static User getStaticInstance() {
    10         return new User("101", "=====静态方法调用=========");
    11 
    12     }
    13 
    14 }

    3、更改bean.xml为如下

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xsi:schemaLocation="
     6         http://www.springframework.org/schema/beans
     7         http://www.springframework.org/schema/beans/spring-beans.xsd
     8         http://www.springframework.org/schema/context
     9         http://www.springframework.org/schema/context/spring-context.xsd">
    10 
    11 
    12     <!-- 实例化一个对象 -->
    13     <bean id="oFactory" class="com.liuyang.static1.constructor.ObjectFactory">
    14     </bean>
    15     <bean id="user" factory-bean="oFactory" factory-method="getInstance"></bean>
    16 
    17     <!-- 静态方法调用 -->
    18     <bean id="user2" class="com.liuyang.static1.constructor.ObjectFactory"
    19         factory-method="getStaticInstance"></bean>
    20 </beans>

    4、测试

     1 public class App {
     2 
     3     ApplicationContext aContext = new ClassPathXmlApplicationContext(
     4             "com/liuyang/static1/constructor/beans2.xml");
     5 
     6     @Test
     7     public void test() {
     8         User user = (User) aContext.getBean("user");
     9 
    10         System.out.println(user);
    11     }
    12 
    13     @Test
    14     public void test2() {
    15         User user2 = (User) aContext.getBean("user2");
    16 
    17         System.out.println(user2);
    18     }
    19 }
  • 相关阅读:
    生成测试报告unittest、HTMLTestRunner(pytest、allure)
    接口自动化上传视频(python)
    Android手机测试环境搭建
    jmeter性能测试监控
    jmeter多机联合负载
    jenkins+ant+jmeter接口自动化的持续集成
    jmeter+jenkins 配置过程(很详细)
    XSS攻击测试代码
    web安全测试之 xss攻击
    互联网公司--高级测试工程师面试经验分享
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/6535180.html
Copyright © 2011-2022 走看看