Spring

什么是spring?

Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。

Spring的核心功能:

Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等)。

Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务。

Spring AOP:AOP服务。

Spring Web:提供了基本的面向Web的综合特性,提供对常见框架如Struts2的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。

Spring MVC:提供面向Web应用的Model-View-Controller,即MVC实现。

Spring DAO:对JDBC的抽象封装,简化了数据访问异常的处理,并能统一管理JDBC事务。

Spring ORM:对现有的ORM框架的支持。

IOC和DI

IOC:

        控制反转,指将对象的控制权转移给Spring框架,由 Spring 来负责控制对象的生命周期(比如创建、销毁)和对象间的依赖关系。

        传统的应用程序是我们自己去创建(new)对象,为"正转",而IOC是将创建对象的工作交给Spring容器,对象是被动的被Spring容器创建,即为“反转”,“控制”即为Spring容器控制对象的创建。

目的:降低耦合度。

DI:

DI可以说是IOC的一种具体实现,在Spring创建对象的过程中,将对象依赖的属性注入到对象中,即创建A对象时将其依赖的B对象也一并创建并注入到A对象中。相对IOC 而言,“依赖注入”明确描述了“被注入对象依赖IOC容器配置依赖对象”。

使用注解:

1、在resources下建立applicationContext.xml

2、在applicationContext.xml中更改:

​

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="Index of /schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="Index of /schema/context"

xsi:schemaLocation="

Index of /schema/context

http://www.springframework.org/schema/context/spring-context.xsd

Index of /schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

">

<context:component-scan base-package="com.yan"></context:component-scan>

</beans>
​

不能出错,否则会  警告: Ignored XML validation warning

IOC操作Bean管理:

bean管理:1、spring创建对象。2、spring注入属性

当我们在将一个类上标注@Service或者@Controller或@Component或@Repository注解之后,spring的组件扫描就会自动发现它,并且会将其初始化为spring应用上下文中的bean。 当需要使用这个bean的时候,例如加上@Autowired注解的时候,这个bean就会被创建。

@Autowired注解:

作用:可以标注在属性上、方法上和构造器上,来完成自动装配。默认是根据属性类型,spring自动将匹配到的属性值进行注入。

它可以标注在属性上、方法上和构造器上。

@Qualifier注解:

1、在使用@Autowire自动注入的时候,加上@Qualifier(“test”)可以指定注入哪个对象;

2、可以作为筛选的限定符,我们在做自定义注解时可以在其定义上增加@Qualifier,用来筛选需要的对象。

在main方法中:

public class Main {

public static void main(String[] args) {

    ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");

    Clazz c=context.getBean(Clazz.class);

    System.out.println(c);

}

}

在Clazz类中:

@Component("Clazz")

public class Clazz {

@Autowired

@Qualifier("arr")

private int[] arr;


@Autowired

private List<String> list;

@Override

public String toString(){

    return "{"+

        ", arr=" + Arrays.toString(arr) +

        ", list=" + list +

           '}';    

}

}

在另外一个类Config中:

@Configuration

public class Config {

@Bean("arr")

public int[] initArr(){

return new int[]{12,3,34,41,32,2};

}


@Bean("list")

public LinkedList<String> initList(){

LinkedList<String> list= new LinkedList<>();

list.add("dsda");

list.add("21");

list.add("无敌");

return list;

}

}

添加toString方法后,输出:

{arr=[12, 3, 34, 41, 32, 2], list=[dsda, 21, 无敌]}

@Configuration注解:它是一个类级别的注释,表明一个对象是 bean 定义的来源。@Configuration类通过带@Bean注释的方法声明 bean 。@Bean对@Configuration类方法的调用也可用于定义 bean 间的依赖关系

@Configuration在spring的注解开发中占有很重要的地位,你当你想要定义一个配置类并交给spring管理的时候你就可以在相关类上面加这个注解,并配合@Bean注解把对象交个spring去管理

@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。目的是创建一个类。当spring需要创建指定的一个类时会调用这个注解(@Bean)的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值