一路繁花似锦绣前程
失败的越多,成功才越有价值

导航

 

一、pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>A02spring</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--https://mvnrepository.com/artifact/org.springframework/spring-context-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

二、spring的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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
    创建对象的三种方式
        创建具有无参构造函数的对象
        <bean id="student1" class="com.wuxi.benas.Student"></bean>
        由工厂类的方法创建的对象
        <bean id="createBeanFactory" class="com.wuxi.utils.CreateBeanFactory"></bean>
        <bean id="student2" factory-bean="createBeanFactory" factory-method="CreateStudent"></bean>
        由工厂类的静态方法创建对象
        <bean id="student3" class="com.wuxi.utils.CreateBeanFactory" factory-method="staticCreateStudent"></bean>
    -->

    <!--
    bean的作用范围
        scope:取值
            singleton:单例
            prototype:多例
            request:作用于web应用的请求范围
            session:作用于web应用的会话范围
            global-session:作用于集群环境的会话范围(全局会话范围),当不是集群环境时,它就是session
    <bean id="student4" class="com.wuxi.benas.Student" scope="prototype"></bean>
    -->

    <!--
    bean的生命周期
        单例:生命周期与容器一致
        多例:使用时创建,当没有引用时,由垃圾回收器销毁
    -->

    <!--
    依赖注入
        构造函数注入
    <bean id="student51" class="com.wuxi.benas.Student">
        <constructor-arg name="id" value="1"></constructor-arg>
        <constructor-arg name="name" value="孟美岐"></constructor-arg>
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="birthday" ref="birthday51"></constructor-arg>
    </bean>
    <bean id="birthday51" class="java.util.Date"></bean>
        set方法注入
    <bean id="student52" class="com.wuxi.benas.Student">
        <property name="id" value="2"></property>
        <property name="name" value="黄婷婷"></property>
        <property name="age" value="19"></property>
        <property name="birthday" ref="birthday52"></property>
    </bean>
    <bean id="birthday52" class="java.util.Date"></bean>
        注入集合数据
    <bean id="usuallyTool" class="com.wuxi.benas.UsuallyTool">
        <property name="array">
            <array>
                <value>孟美岐</value>
                <value>黄婷婷</value>
                <value>鞠婧祎</value>
            </array>
        </property>
        <property name="list">
            <list>
                <value>孟美岐</value>
                <value>黄婷婷</value>
                <value>鞠婧祎</value>
            </list>
        </property>
        <property name="set">
            <set>
                <value>孟美岐</value>
                <value>黄婷婷</value>
                <value>鞠婧祎</value>
            </set>
        </property>
        <property name="map">
            <map>
                <entry key="姓名" value="孟美岐"></entry>
                <entry key="年龄">
                    <value>18</value>
                </entry>
            </map>
        </property>
        <property name="props">
            <props>
                <prop key="姓名">孟美岐</prop>
                <prop key="年龄">18</prop>
            </props>
        </property>
    </bean>
    -->
</beans>

三、使用

/*
1、获取核心容器的三个实现类
    * ClassPathXmlApplicationContext:读取类路径下的配置文件并创建容器
    * FileSystemXmlApplicationContext:读取系统路径下的配置文件并创建容器
    * AnnotationConfigApplicationContext:读取注解配置并创建容器
2、两个核心容器
    * ApplicationContext:单例对象和多例对象都可以使用
    * BeanFactory:多例对象使用
*/
public class MySpringTest {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
/*
        // 创建对象的三种方式
        Student student1 = (Student) ac.getBean("student1");
        System.out.println(student1);
        Student student2 = (Student) ac.getBean("student2");
        System.out.println(student2);
        Student student3 = (Student) ac.getBean("student3");
        System.out.println(student3);

        // bean的作用范围
        Student student41 = (Student) ac.getBean("student4");
        Student student42 = (Student) ac.getBean("student4");
        System.out.println(student41 == student42);// false

        // 依赖注入
        //     构造函数注入
        Student student51 = (Student) ac.getBean("student51");
        System.out.println(student51);
        //     set方法注入
        Student student52 = (Student) ac.getBean("student52");
        System.out.println(student52);
        //     注入集合数据
        UsuallyTool usuallyTool = (UsuallyTool) ac.getBean("usuallyTool");
        System.out.println(usuallyTool);
*/
    }
}

 四、对IOC的理解

  IOC(控制反转)就是将对象创建过程交由spring容器控制,目的是降低耦合。

posted on 2020-09-11 15:47  一路繁花似锦绣前程  阅读(183)  评论(0编辑  收藏  举报