spring-day01

在applicationContext.xml中配置如下代码

<!--
    在spring主配置文件中,告诉spring IOC容器,user在这里,
    spring一旦运行起来就会首先加载该配置文件作为spring的上下文
    创建user对象(实例)
     -->
    <bean id="user" class="com.spring.di.User">
        <property name="id" value="2"></property>
        <property name="username">
            <value>marry</value>
        </property>
    </bean>

    <bean id="person" class="com.spring.di.Person">
        <property name="name">
            <value>zhangsan</value>
        </property>
        <property name="age" value="32"></property>
        <property name="sal" value="3200"></property>
        <property name="user">
            <ref bean="user"></ref>
        </property>
        <property name="user2">
            <!-- 内部bean 作用范围只在当前person bean 的内部
                   外部是看不见 不能被外部bean使用
             -->
            <bean class="com.spring.di.User">
                <property name="id" value="22"></property>
                <property name="username">
                    <value>marry2</value>
                </property>
            </bean>
        </property>
    </bean>
    <bean id="dog" class="com.spring.di.Dog">
        <!-- 根据构造器参数的索引来注入 -->
        <!-- <constructor-arg value="小花花" index="0"></constructor-arg>
        <constructor-arg value="白色" index="1"></constructor-arg> -->

        <!-- 根据构造器参数类型注入 -->
        <constructor-arg value="小花花" index="0" type="java.lang.String"></constructor-arg>
        <constructor-arg value="白色" index="1" type="java.lang.String"></constructor-arg>
        <constructor-arg value="1" index="2" type="java.lang.Integer"></constructor-arg>
        <constructor-arg type="com.spring.di.User" ref="user"></constructor-arg>
    </bean>

    <bean id="cat" class="com.spring.di.Cat">
        <property name="name" value="詹尼"></property>
        <!-- 注入null值    也可以不注入 -->
        <property name="color">
            <null />
        </property>
    </bean>

    <!-- 集合类型注入 -->
    <bean id="pet" class="com.spring.di.Pet">
        <!-- List类型注入 -->
        <property name="dogs">
            <list>
                <value>小花花</value>
                <value>珍妮</value>
                <value>旺财</value>
                <value>小强</value>
            </list>
        </property>

        <!-- Set类型注入 -->

        <property name="cats">
            <set>
                <value>小花花</value>
                <value>珍妮</value>
                <value>旺财</value>
                <value>小强</value>
            </set>
        </property>

        <!-- Map类型注入 -->
        <property name="pigs">
            <map>
                <entry>
                    <key>
                        <value>1</value>
                    </key>
                    <value>大白</value>
                </entry>
                <entry key="2" value="小白"></entry>
            </map>
        </property>

        <!-- 数组类型注入 -->
        <property name="birds">
            <list>
                <value>新天问</value>
                <value>喜鹊</value>
            </list>
        </property>

        <!-- Properties类型属性注入 -->
        <property name="pp">
            <props>
                <prop key="p1">p1_value</prop>
                <prop key="p2">p2_value</prop>
            </props>
        </property>

    </bean>

    <!-- 自动装配
        byName byTime
         -->
    <bean id="a" class="com.spring.auto.A">
        <property name="aname" value="AAA"></property>
    </bean>
    <bean id="b" class="com.spring.auto.B">
        <property name="bname" value="BBB"></property>
    </bean>

    <!-- 这是正常的对象属性注入 -->
    <bean id="ab" class="com.spring.auto.AB">
        <property name="a">
            <ref bean="a"></ref>
        </property>
        <property name="b">
            <ref bean="b"></ref>
        </property>
    </bean>

    <!-- byName
        spring的IOC容器会根据AB类的属性名称会去在容器中自动查找id等于其属性名称的bean进行自动装配(实现注入)
    -->
    <bean id="ab_byName" class="com.spring.auto.AB" autowire="byName">
    </bean>

    <!-- byType
        spring的IOC容器会根据AB类的属性类型去容器中自动查找类型等同于其属性类型的bean进行自动装配(实现注入)
        如果出现了多个类型相同的bean 使用byType自动装配就会出现异常
         org.springframework.beans.factory.NoUniqueBeanDefinitionException
    -->
    <!-- <bean id="b1" class="com.spring.auto.B">
        <property name="bname" value="BBB1"></property>
    </bean> -->

    <bean id="ab_byType" class="com.spring.auto.AB" autowire="byType">
    </bean>

    <!-- 分散装配
        org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
     -->
     <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
         <property name="location">
             <value>test.properties</value>
         </property>
     </bean>

 test.propertie文件

    key1=value1
    key2=value2
    key3=value3

    <bean id="testProperties" class="com.spring.auto.TestProperties">
        <property name="key1" value="${key1}"></property>
        <property name="key2" value="${key2}"></property>
        <property name="key3" value="${key3}"></property>
    </bean>

测试代码如下

ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        /*AB ab= (AB) ac.getBean("ab");
        System.out.println(ab);*/

        AB ab_byName= (AB) ac.getBean("ab_byName");
        System.out.println(ab_byName);

    /*    AB ab_byType= (AB) ac.getBean("ab_byType");
        System.out.println(ab_byType);*/

        /*TestProperties testProperties= (TestProperties) ac.getBean("testProperties");
        System.out.println(testProperties);*/
/*        User user = new User();    //代码的耦合在一起,不利于后期代码的维护
        user.setUsername("jack");

        System.out.println(user.toString());
        System.out.println("------------------------");

        User user2 = new User(1,"tom","123");
        System.out.println(user2.toString());*/

        //启动spring的IOC容器  加载主配置文件
/*         @SuppressWarnings("resource")
        ApplicationContext ac= new ClassPathXmlApplicationContext("applicationContext.xml");

         User user =(User) ac.getBean("user");
         System.out.println(user.toString());*/
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Person person = (Person) ac.getBean("person");
        System.out.println(person.toString());

        /*Cat cat=(Cat) ac.getBean("cat");
        System.out.println(cat);*/

        /*Pet pet= (Pet) ac.getBean("pet");
        System.out.println(pet);*/
时间: 2024-10-14 03:54:33

spring-day01的相关文章

Spring day02笔记

spring day01回顾 编写流程(基于xml) 1.导入jar包:4+1 --> beans/core/context/expression | commons-logging 2.编写目标类:dao和service 3.spring配置文件 IoC:<bean id="" class="" > DI:<bean> <property name="" value="" | ref=&q

Java学习笔记:Spring框架

1.什么是Spring? 1.1 spring 是一个开源框架 1.2 spirng 为简化企业级应用开发而生,使用 spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能 1.3 spring 是一个 IOC(DI) 和 AOP 容器框架 2.Spring入门示例   2.1 HelloWorld.java package com.oneline.spring.day01; public class HelloWorld { private String name;

spring_2

1 spring day01回顾 1.1 编写流程(基于xml) 1.导入jar包:4+1  --> beans/core/context/expression  | commons-logging 2.编写目标类:dao和service 3.spring配置文件 IoC:<bean id="" class="" > DI:<bean> <property name="" value=""

[刘阳Java]_Spring相关配置介绍_第5讲

这一节我们介绍一下Spring框架的相关常用配置 Spring依赖注入的两种方式(构造方法注入和setter方式注入) p-namespace方式配置 properties属性文件配置方式 集合对象配置方式 Bean scopes作用域(单例作用域和原生作用域) 1. Spring依赖注入方式 构造方法注入,它相当于在Spring初始化对象的时候调用构造方法将其对象之间的依赖关系给注入到对象中 先在类中定义好依赖对象 再去定义构造方法,通过在构造方法的参数中设置对象的依赖关系 最后在Spring

Spring学习-day01

<!-- 配置bean class: bean的全类名,通过反射的方式在 IOC 的容器中创建 Bean. 所以要求 中必须有无参数的构造器 id:标识容器中的 bean. id 是唯一的 --> <!-- 使用 setter 方法进行属性注入 --> <bean id="helloWorld" class="com.atguigu.spring.beans.HelloWorld"> <property name="

spring boot 文档学习笔记day01

1.在pom.xml中使用spring-boot-starter-parent的作用: Maven users can inherit from the spring-boot-starter-parent project to obtain sensible defaults. The parent project provides the following features: Java 1.8 as the default compiler level. UTF-8 source enco

注解配置的Spring MVC

基于注解配置的Spring MVC 简单的HelloWorld实例应用 2.1 问题 使用注解的方式重构helloworld应用案例. 2.2 方案 1. @RequestMapping注解应用 @RequestMapping可以用在类定义和方法定义上,它标明这个类或方法与哪一个客户请求对应.实例代码如下: @RequestMapping("/day01") public class HelloController { @RequestMapping("/hello.form

Spring Web MVC 基础

一.Spring Web MVC简介 1.1.MVC模式简介 *M-Model模型 模型(Model)的职责是负责业务逻辑.包含两层:业务数据和业务处理逻辑.比如实体类.DAO.Service都属于模型层. *V-View视图 视图(View)的职责是负责显示界面和用户交互(收集用户信息).属于视图的组件是不包含业务逻辑和控制逻辑的JSP. *C-Controller控制器 控制器是模型层M和视图层V之间的桥梁,用于控制流程比如:在Servlet项目中的单一控制器ActionServlet. 1

Spring第二天——IOC注解操作与AOP概念

大致内容 spring的bean管理(注解实现) AOP原理 log4j介绍 spring整合web项目的演示 一.spring注解实现bean管理 注解: 代码中一些特殊的标记,使用注解也可以完成一些相关的功能(写法"@") 方法上.类上(详见基础加强) 使用注解创建对象,注入属性(完成day01相似的功能) 可以使用注解,但不可能完全替代xml配置文件 准备工作: 导入包:除了day01的6个核心jar包(当然包括日志的包) 再加上aop的那个jar包(注解功能在里面),也就是图中

Spring的IOC和AOP之深剖

我们首先要知道 用Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例,并调用bean实例的方法完成“依赖注入”. Spring框架的作用是什么?有什么优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6