Spring第一天

Spring框架

一丶Sprinf框架

1.1概念

  • Spring是一个项目管理框架,同时也是一套javaEE解决方案。
  • Spring是众多优秀设计模式的组合(工厂,单利,代理,适配器,包装器,观察者,模板,策略)。
  • Spring并未替代现有框架产品,而是将众多框架进行有机整合,简化企业级开发,俗称“胶水框架”。

1.2Spring的组成

Spring架构有诸多模块祖成,可分类为

  • 核心技术:依赖注入,事件,资源,i18n,验证,数据绑定,类型转换,SpEl,AOP。
  • 测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。
  • Spring MVC 和 Spring WebFlux WEB框架
  • 集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。
  • 语言:Kotliin,Froovy,动态语言。

1.3Spring环境搭建

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.10</version>
</dependency>

  定义目标Bean类型

public class MyClass {
    public void show(){
        System.out.println("show 方法!!!");
    }
}

  配置spring-context.xml中的<beans>内部配置bean标签

<?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-2.5.xsd">

  id:“自定义”标识
  class:“需要被创建的目标对象全限定名”
<bean id="my" class="com.cyf.bean.MyClass"></bean> </beans>

  调用Spring工厂API(ApplictionContext接口)

import com.cyf.bean.MyClass;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestFactory {
    public static void main(String[] args) {
    //1.读取配置文件中所需要创建的bean对象,并获得工厂对象 ClassPathXmlApplicationContext cac
= new ClassPathXmlApplicationContext("spring-context.xml"); //2.通过id获取bean对象
     MyClass bean
= (MyClass)cac.getBean("my");
    //3.使用对象 bean.show(); } }

二丶IOC控制反转【重点】

控制反转:反转了依赖关系的满足方式,由之前的自己创建依赖对象,变为有工厂推送,解决了具有依赖关系的组件之间的强耦合,使得项目形态更加稳健

public class UserServletImpl implements UserServlte {
    private userDao userDao1;

    public userDao getUserDao1() {
        return userDao1;
    }

    public void setUserDao1(userDao userDao1) {
        this.userDao1 = userDao1;
    }

    public void quer() {
        System.out.println("主方法quer:    hello!!!");
        userDao1.Userdd();
    }
}
    <bean id="userdao" class="com.cyf.dao.impl.userDaoImpl"></bean>
    <bean id="userServlte" class="com.cyf.servlet.impl.UserServletImpl">
        <property name="userDao1" ref="userdao"></property>
    name:写属性值 ref:你要用到的实现类
</bean>

三丶DI依赖注入【重点】

3.1 概念:在Spring创建对象的同时,为其属性赋值,称之为依赖注入

3.2 SET注入:创建对象时,Spring工厂会通过Set方法为对象的属性赋值

3.2.1定义目标类型

public class User {
    private Integer id;
    private String pad;
    private Date date;
    private String[] hobbys;
    private Set<String> set;
    private List<String> names;
    private Map<String,String> map;
    private Properties properties;

3.2.2基本类型+字符串类型+日期类型

<!--    基本类型 + 字符串类型 + 日期类型    -->
    <bean id="ul" class="com.cyf.user.User">
        <property name="id" value="1001"></property>
        <property name="pad" value="123456"></property>
        <property name="date" value="1990/01/01"></property>
    </bean>

3.2.2容器类型

<bean id="ul2" class="com.cyf.user.User">
        <!--数组-->
        <property name="hobbys">
            <array>
                <value>D123</value>
                <value>C123</value>
                <value>A123</value>
                <value>V123</value>
                <value>E123</value>
            </array>
        </property>
        <!--Set集合-->
        <property name="set">
            <set>
                <value>1348234</value>
                <value>1348234</value>
                <value>1348234</value>
                <value>1348234</value>
            </set>
        </property>
        <!--List集合-->
        <property name="names">
            <list>
                <value>123</value>
                <value>345</value>
            </list>
        </property>
        <!--Map集合-->
        <property name="map">
            <map>
                <entry key="CN1" value="Chian"></entry>
                <entry key="CN2" value="Chian"></entry>
                <entry key="CN3" value="Chian"></entry>
            </map>
        </property>
        <!--properties-->
        <property name="properties">
            <props>
                <prop key="fidas1">One</prop>
                <prop key="fidas2">One</prop>
                <prop key="fidas3">One</prop>
            </props>
        </property>
    </bean>        

3.2.3自建类型

 

3.2.4构造注入

 

3.2.4自动注入

 

四丶Bean细节

4.1可控制简单对象的单例,多例模式

配置:在bean标签添加  scope=“singleton|prototype”

singleton:多例

prototype:单例

 

posted on 2021-10-12 18:17  大傻子0913  阅读(29)  评论(0)    收藏  举报