Spring必须了解的知识点

考点:Spring简介 1.Spring是什么?(按自己的理解进行描述,包括但不限于其概念、特点、核心组件、解决了哪些问题)

Spring是一个家族体系,涉及很多领域,有很多项目,核心项目是Spring-framework,其他项目是依 赖于核心项目的,每一个项目中也有很多模块,其中Spring-framework核心模块:AOP、IOC、DAO、 Web、Web-MVC、ORM、Core等。 Spring是一种轻量级框架,spring给用户提供的功能完全有用户自己决定,用户想用什么功能需要自 己去选择并使用;对比mybatis,mybais是一个重量级框架, 只有一个核心jar包,不管我的项目用不用 这个功能,都得把所有的功能拿到;而spring是组件化的,如果需要使用IOC模块,只需导入IOC模块相关 jar包即可,无需导入别的组件相关jar包。 Spring的核心宗旨是简化企业级应用开发,同时给复杂问题提供强大的、非侵入性解决方案,是 在整个项目中都是起作用的,不像mybatis是单纯做数据的持久化。 Spring的作用总结来说就是解耦,降低层与层之间的依赖,可以让开发人员可以只关注整个结构 中的其中某一层;降低模块与模块之间、对象与对象之间的耦合度。

考点:spring IOC DI 1.如何理解IOC与DI?(按自己的理解进行描述,包括但不限于是什么、解决了哪些问题)

IOC(控制反转)和DI(依赖注入)其实是一个思想:把对象配置给Spring容器。让容器管理bean 的生命周期、同时管理bean与bean之间的依赖关系。 解决的问题:对象的构建。如果依赖非常多的对象,且层次很深,外层在构造对象时很麻烦且 不一定知道如何构建这么多层次的对象。 IOC 帮我们管理对象的创建,只需要在配置文件里指定如何构 建,每一个对象的配置文件都在类编写的时候指定了,所以最外层对象不需要关心深层次对象如何创建 的。

2.IOC的常见注入方式有哪些?

Set方法注入、构造方法注入、命名空间注入、集合属性注入

3.请解释注解:@Autowired @Qualifier @Resource @ComponentScan @Component @Controller @Service @Repository @Scope的含义?

@Autowired 自动注入 (先按照类型,后按照名字) @Qualifier 自动注入 (按照名字) @Resource 自动注入 (按照id注入) @ComponentScan 扫描包 @Component 实例化组件 @Controller 实例化Controller层 @Service 实例化Service层 @Repository 实例化dao层 @Scope 指定作用范围,默认是单例模式,prototype原型模式,每次获取Bean的时候会有一个 新的实例

4.请按照下面要求完成编程。
(1)构建包com.briup.bean并在包下构建Address类,属性如下:
(2)在包下构建Person类,属性如下:
(3)提供get和set方法,重写toString方法,输出当前对象字符串表达形式
(4)构建包com.briup.ioc.set,并在包下构建set.xml,配置文件使用set方式注入完成Person类中
Address属性和其他基本属性的注入
(5)在com.briup.ioc.set包下的构建SetterTest类,使用jUnit书写方法ioc_setter测试注入之后Person类的属性输出


(1)构建包com.briup.bean并在包下构建Address类,属性如下:
private String city;
private String street;
private String country;

(2)在包下构建Person类,属性如下:
private int No;
private String name;
private boolean gender;
private int age;
private Address address;

(3)提供get和set方法,重写toString方法,输出当前对象字符串表达形式
package com.briup.bean;
import lombok.Data;
@Data
public class Address {
private String city;
private String street;
private String country;
}

(4)构建包com.briup.ioc.set,并在包下构建set.xml,配置文件使用set方式注入完成Person类中
Address属性和其他基本属性的注入
package com.briup.bean;
import lombok.Data;
@Data
public class Person {
private int No;
private String name;
private boolean gender;
private int age;
private Address address;


(5)在com.briup.ioc.set包下的构建SetterTest类,使用jUnit书写方法ioc_setter测试注入之后Person类的属性输出
<?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/springbeans.xsd">
<bean name="address" class="com.briup.bean.Address">
<property name="city" value="江苏"></property>
<property name="street" value="昆山"></property>
<property name="country" value="中国"></property>
</bean>
<bean name="person" class="com.briup.bean.Person">
<property name="No" value="1"></property>
<property name="name" value="tom"></property>
<property name="gender" value="true"></property>
<property name="age" value="18"></property>
<property name="address" ref="address"></property>
</bean>
</beans>

package com.briup.ioc.set;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.briup.bean.Person;
public class SetterTest {
@SuppressWarnings("resource")
@Test
public void ioc_setter() {
//1.读取配置文件,创建容器对象
ApplicationContext ac = new
ClassPathXmlApplicationContext("com/briup/ioc/set/set.xml");
//2.获取bean对象
Person person = (Person) ac.getBean("person");
//3.输出对象
System.out.println(person);
}
}

5.请按照下面要求完成编程。
(1)在com.briup.bean中构建结合类CollBean,属性如下,并提供get/set方法:
private List<String> list;
private Map<String,String> map;
private Properties props;
private Set<String> set;
private String[] array;

(2)配置文件完成各种集合属性的注入,并使用junit测试
package com.briup.bean;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import lombok.Data;
@Data
public class CollBean {
private List<String> list;
private Map<String,String> map;
private Properties props;
private Set<String> set;
private String[] array;
}


<bean name="coll" class="com.briup.bean.CollBean">
<property name="list">
<list>
<value>list1</value>
<value>list2</value>
</list>
</property>
<property name="map">
<map>
<entry key="1" value="tom"></entry>
<entry key="2" value="jack"></entry>
</map>
</property>
<property name="props">
<props>
<prop key="one">zhangsan</prop>
<prop key="two">lisi</prop>
</props>
</property>
<property name="set">
<set>
<value>set1</value>
<value>set2</value>
</set>
</property>
<property name="array">
<array>
<value>arr1</value>
<value>arr2</value>
</array>
</property>
</bean>


@SuppressWarnings("resource")
@Test
public void coll_setter() {
//1.读取配置文件,创建容器对象
ApplicationContext ac = new
ClassPathXmlApplicationContext("com/briup/ioc/set/set.xml");
//2.获取bean对象
CollBean coll = (CollBean) ac.getBean("coll");
//3.输出对象
System.out.println(coll);
}





考点:spring AOP 1.请按照自己的理解描述AOP是什么?

AOP的意思就是面向切面编程,一句话概括就是把切面类的代码动态的织入到指定的切入点上。 切面:需要分离出来的代码;    连接点:是我们要把切面添加到的指定的方法;   切入点:多个连接点的集合;     通知:指定把切面代码织入到切入点的什么位置,例如:织入到方法之前/之后/抛异常等时 候;      增强器:可以在切入点中进行进一步筛选,筛选出希望将来织入代码的连接点的(方法)。

考点:代理模式 1.三种代理模式都有什么,简单说明三者的区别?

(1)静态代理(类似于装饰者模式)  

静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者 是继承相同父类。

(2)jdk的动态代理   

本质:在内存中构建出接口的实现类 特点:被代理对象,必须有接口。

(3)cglib动态代理

实现MethodInterceptor接口,持有目标对象引用,利用构造器动态传入目标对象。

考点:事务属性 1.简述spring中的事务属性

传播行为 隔离级别 是否只读 事务超时 回滚规则

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值