Spring基础

Spring框架需要的依赖

  • 创建普通Java工程,只需导入:spring-context

  • 创建web工程,只需导入:spring-webmvc    【在普通maven工程下创建web工程作为子模块,是否获取到web相关的依赖的】

  • 需要数据库和事务,则需要导入:spring-jdbc

XML实例化Bean的四种方式

Spring中所有Bean的加载方式都是懒加载

  • 公共无参构造方法的创建对象

<bean id="user" class="top.onething.demo.Domain.User"/>
  • 静态工厂方式创建对象

<bean id="user" class="top.onething.demo.StaticFactory" factory-method="getUser"/>
  • 实例工厂方式创建对象

<bean id="factory" class="top.onething.demo.BeanFactory"/>
<bean id="user" factory-bean="factory" factory-method="getUser"/>
  • FactoryBean接口实现类创建对象

<bean id="product" class="top.onething.demo.ProductFactoryBean"/>

Spring通过FactoryBean接口实现类的对象调用getObject方法进行创建

public class ProductFactoryBean implements FactoryBean<Product> {
    @Override
    public Product getObject() throws Exception {
        return new Product();
    }
    
    @Override
    public Class<Product> getObjectType() {
        return Product.class;
    }
}

FactoryBean和BeanFactory的区别

  • BeanFactory是一个创建对象的工厂,通过工厂方法创建对象

  • FactoryBean是一个能创建对象的Bean,通过该Bean的getObject方法获取对象

注解方式实例化Bean的方式

@Component、@Controller、@Service、@Repository

XML属性注入

ref和value的区别:属性注入时,注入对象使用ref,注入字符串、数字就使用value

  1. 使用set方法注入

<bean id="UserService" class="top.onething.demo.UserService">
    <property name="id" value="100"/>
    <property name="userDao" ref="userDao"/>
</bean>
  • 注入的属性为数组,有两种方式

方式1:
<property name="arr" value="A,B,c"/>
​
方式2:
<property name="arr">
    <array>
        <value>A</value>
        <value>B</value>
        <value>C</value>
    </array>
</property>
  1. 使用有参构造注入

<bean id="product" class="top.onething.demo.Domain.User">
    <constructor-arg name="id" value="111"/>
    <constructor-arg name="username" value="测试"/>
</bean>

Bean对象的生命周期

创建对象---》初始化---》运行---》销毁

Bean对象的初始化方法和销毁方法

<bean id="user" class="top.onething.demo.User" init-method="init" destroy-method="destory"/>
​

Bean对象的作用域

作用域:单例【singleton】、多例【prototype】

加载方式:延迟加载、迫切加载

  • spring默认作用域为单例,默认是懒加载【延迟加载】

  • xml配置多例

<bean id="product" class="top.onething.demo.Domain.Product" scope="prototype"/>
  • xml配置迫切加载

<bean id="product" class="top.onething.demo.Domain.Product" lazy-init="false"/>

AOP

Spring实现Aop有两种方案:JDK和CGLIB

  • 目标对象实现接口:spring使用JDK的java.lang.reflect.Proxy类代理

  • 目标对象没有实现接口:spring使用CGLIB库生成目标对象的子类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值