【Spring】注意
Spring
-
Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
-
什么是控制反转IOC?
IOC是一种设计思想。可以通过依赖注入DI的方式实现控制反转。在没有IOC的程序中,使用面向对象编程,对象的创建和对象的依赖关系硬编程在程序中的,对象的创建由程序自己控制。控制反转后,将对象的创建转移给第三方。控制反转就是:获得依赖对象的方式反转了。
-- 在Spring中实现控制反转:对象是由Spring创建的,而不是我们写new对象的代码。实现方式是依赖注入DI,依赖注入的方式之一是利用对象的类中的set属性方法进行注入的。
我们在spring的配置文件中配置了bean,使用时通过配置文件获取Spring的
ApplicationContext对象,再获取bean,此时所有配置文件中的bean都会由Spring创建出对象。我们得到对象后,就可以进行我们需要的操作了。
-
使用对象需要在applicationContext.xml中配置bean。
-
在配置文件中注册的所有bean(不管用了没用),在getBean时全部实例化了!(在配置文件加载时,容器中管理的全部对象都初始化了。)
-
在applicationContext.xml中,可以使用
<import>导入其他Spring配置文件。 -
依赖注入的方式:构造器注入、set方式注入(常用)、p命名空间注入&c命名空间注入
1.构造器注入:无参构造、有参构造
默认使用无参构造方法创建对象,配置bean时,属性赋值使用
<property>标签。若使用有参构造创建对象,属性赋值使用
<constructor-arg>标签。可通过下标(常用)、类型、参数名。2.set方式注入
注意不同属性类型的注入方式
3.p命名空间注入&c命名空间注入
p命名空间注入:通过property
c命名空间注入:通过constructor
-
自动装配方式autowire:
1.在xml中显示配置:
byName:自动在容器上下文查找,和自己对象set方法后的值对应的bean id
byType:自动在容器上下文查找,和自己对象的属性的类型相同的bean
2.使用注解配置
-
配置注解的支持
<context:annotation-config/> -
在类的属性上直接使用
@Autowored,就可以不用编写set方法。 -
相关注解:
@Autowired:自动装配
@Nullable(字段)
@Qualifier(value="xx"):如果Autowired不能唯一自动装配属性,需要通过@Quarifier(value="xxx")指定一个唯一的bean对象注入
@Resource:(javax自带注解)自动装配
-
-
Spring注解开发
使用以下注解需要配置
<!--指定要扫描的包,这个包下的注解就会生效--> <context:component-scan base-package="pojo"/>-
@Component:代替配置文件中bean的注册
-
@Repository:dao层
-
@Service
-
@Controller
-
-
@Value:代替配置文件中bean的简单属性值的注入
-
@Scope("xx"):作用域,默认singleton
-
-
使用纯注解开发,JavaConfig用到的注解:
- @Configuration:代表这是一个配置类,代替applicationConfig.xml
- @ComponentScan("pojo"):代替
<context:component-scan base-package="pojo"/> - @Bean:注册一个bean,就相当于配置文件中的一个bean标签
- @Import:若出现多个配置类,可以使用
@Import导入
-
什么是AOP?
AOP(Aspect Oriented Programming),面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
-
AOP在Spring中的作用:
提供声明式事务;允许用户自定义切面。
-
使用Spring实现aop 流程:
方一:使用原生Spring API接口
1.导入aspectjweaver依赖
2.接口UserService
3.实现类UserServiceImpl
4.切面(类),通知(方法):切面类继承不同通知类型接口
5.applicationContext.xml:注册bean
6.applicationContext.xml - 配置aop:切入点,通知
7.测试:动态代理接口
方二:自定义实现AOP
(前略)
1.切面类,通知(方法)
2.applicationContext.xml:注册bean
3.applicationContext.xml - 配置aop:自定义切面,切入点,通知
方三:使用注解实现
1.注解
@Aspect,切面类;注解通知类型,通知方法2.applicationContext.xml:注册bean。
3.applicationContext.xml:开启aop注解支持
<aop:aspectj-autoproxy /> -
整合Mybatis和Spring:让Spring帮我们创建了Mybatis相关对象(SqlSessionFactory对象、SqlSessionTemplate对象),从而去管理Mapper对象。
方式一:
1.总配置文件 applicationContext.xml:导入spring-dao.xml,注册bean
2.spring-dao.xml:配置数据源,sqlSessionFactory,sqlSessionTemplate
3.mybatis-config.xml
4.接口,实现类:通过SqlSessionTemplate获取xxxMapper。
5.将自己写的实现类,注入到Spring中
6.测试
方式二:
(前略)
1.实现类继承SqlSessionDaoSupport,spring-dao.xml中就不用配置SqlSessionTemplate了。
-
Spring中的事务管理:
方一:声明式事务
在spring-dao.xml中增加:配置声明式事务TransactionManager,配置事务通知(给哪些方法配置事务),配置事务切入。

浙公网安备 33010602011771号