spring

1.ioc创建对象的方式

1、下标赋值

<bean id="user" class="com.beijing.pojo.User" >
<constructor-arg index="0" value="小白学java" />
</bean>

2、类型
<bean id="user" class="com.beijing.pojo.User">
<constructor-arg type="java.lang.String" value="xiaobai" />
</bean>

3、参数名
<bean id="user" class="com.beijing.pojo.User">
<constructor-arg name="name" value="xb" />
</bean>

2.依赖注入

<!--第一种,普通注入,value-->
<property name="name" value="峰哥" />

<!--第二种,Bean注入,ref-->
<property name="address" ref="address" />

<!--数组注入-->
<property name="books">
    <array>
        <value>三国</value>
        <value>水浒</value>
        <value>西游</value>
    </array>
</property>

<!--list注入-->
<property name="hobbys">
    <list>
        <value>吃饭</value>
        <value>睡觉</value>
        <value>打豆豆</value>
    </list>
</property>

<!--Map-->
<property name="card">
    <map>
        <entry key="学位号" value="20180000" />
        <entry key="工位号" value="20210000" />
        <entry key="手机号" value="15700000  " />
    </map>
</property>

<!--Set-->
<property name="games">
    <set>
        <value>LOL</value>
        <value>WZRY</value>
        <value>CF</value>
    </set>
</property>

<!--null-->
<property name="wife">
    <null/>
</property>

<!--Properties-->
<property name="info">
    <props>
        <prop key="学号">2018XXXX</prop>
        <prop key="姓名">fengge</prop>
        <prop key="班级">dashuju</prop>
    </props>
</property>

  

2.1bean的作用域

1、单例模式(spring的默认机制)

<bean id="" class="" scope="singleton" />

2、原型模式

 <bean id="" class="" scope="prototype" />

3、其余的只能在web开发中遇到

3.Bean的自动装配

在spring中有三种装配的方式

  1、在xml中显示的配置

  2、在java中显示配置

  3、隐式的自动装配bean【重要】


byName

<bean id="cat" class="com.beijing.pojo.Cat" />
<bean id="dog" class="com.beijing.pojo.Dog" />
<!--byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的bean id
    byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean
-->
<bean id="person" class="com.beijing.pojo.Person" autowire="byName">
    <property name="name" value="纹身男" />
</bean>

byType

<bean id="cat" class="com.beijing.pojo.Cat" />
<bean id="dog12313123" class="com.beijing.pojo.Dog" />
<!--byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的bean id
    byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean
-->
<bean id="person" class="com.beijing.pojo.Person" autowire="byType">
    <property name="name" value="纹身男" />
</bean>

4.注解实现自动装配

1.使用注解前,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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

</beans>

  

@Autowired :通过byType的方式实现

@Qualifier

如果@Autowired自动装匹配的环境比较复杂,自动装配无法通过一个注解【@Autowired】完成的时候,我们可以使用@Qualifier(value="XXX")去配置@Autowired的使用,指定一个唯一的bean对象注入!

@@Nullable :字段标记了这个注解,说明这个字段可以位null;

@Resource :默认通过buname的方式实现,如果找不到名字,则通过byType实现,如果这两个都找不到的情况下,报错。

 

5.使用注解开发

@Component  :组件,等同于<bean id = "user"  class="com.beijing.pojo.User" />

1.bean

2.  属性如何注入

3.衍生的注解

@Component有几个衍生注解,我们在web开发中,会按照mvc三成架构分层

  -dao  @Repository

  -service  @Service

  -controller  @Controller

以上四个注解功能都是一样的,都是代表将某个类注册到spring中,装配bean

4.自动装配置

@Autowired :通过byType的方式实现

@Qualifier

如果@Autowired自动装匹配的环境比较复杂,自动装配无法通过一个注解【@Autowired】完成的时候,我们可以使用@Qualifier(value="XXX")去配置@Autowired的使用,指定一个唯一的bean对象注入!

@@Nullable :字段标记了这个注解,说明这个字段可以位null;

@Resource :默认通过buname的方式实现,如果找不到名字,则通过byType实现,如果这两个都找不到的情况下,报错。

5.作用域

 

 6.小结

 6.使用java的方式配置Spring

我们现在完全不使用spring的xml配置了,全权交给java来做

package com.beijing.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author liyunfeng
 * @Date 2021/5/18 21:36
 * @Version 1.0
 */

@Component
public class User {

    private String name;

    public String getName() {
        return name;
    }
    @Value("偶像歌手")
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

  

package com.beijing.config;

import com.beijing.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @author liyunfeng
 * @Date 2021/5/18 21:39
 * @Version 1.0
 */
//Configuration代表这是一个 配置类,就和我们之前看的beans.xml
@Configuration
@ComponentScan("com.beijing.pojo")
public class beijingConfig {

    //注册一个bean,就相当于之前写的一个bean标签
    //方法名相当于bean标签的id属性,返回值就是class属性
    @Bean
    public User user(){
        return new User();   //返回要注入到bean的对象
    }
}

  

六、动态代理

七、整合mybatis

1、导入相关的jar

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <!--spring操作数据库的话,还需要一个spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.13</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.2</version>
        </dependency>
    </dependencies>

2.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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd">


</beans>

  

posted @ 2021-05-17 22:04  丶恍惚  阅读(48)  评论(0)    收藏  举报