Spring知识点总结(未写完)
2017-12-20 17:31
441 查看
参考慕课网课程:Spring入门篇
spring介绍
IOC控制反转
1Bean容器初始化
2Spring注入
设值注入
构造注入
Bean
1Bean的配置项
2Bean的作用域Scope
3Bean的生命周期
初始化回调
销毁回调
配置全局默认初始化销毁方法
4Spring Bean装配之Aware接口
5Bean的自动装配Autowiring
byname要在引用的bean中有set方法和属性
byType与bean的id无直接的关系甚至可以删掉id
constructor构造方法
6Resource
Resources
ResourceLoader对Resource进行加载的类所有appliction context实现了该接口
例
Bean管理的注解实现
1Bean的定义及作用域
元注解注解的注解
类的自动检测bean的注册
contextannotation-config contextcomponent-scan
使用过滤器进行自定义扫描
定义bean
作用域
代理方式
2Autowired
成员变量构造器setter方法三者选其一 构造注入 set注入
可以listmap
QualifierResource
3基于Java的容器注解-
Bean
ImportResource Value
Bean Scope
4基于泛型的自动装配
5
通过配置方式来创建对象,管理对象之间依赖关系
spring的web层框架Spring MVC
控制反转IOC、面向切面AOP
把所有由它管理的对象叫做bean
DI:依赖注入是IOC一种实现方式。
IOC容器中,将所有对象称为Bean, 配置元数据
Spring对于Bean两种方式:xml的配置,注解
org.springframework.beans
org.springframework.context
BeanFactory提供配置结构和基本功能,加载并初始化Bean
ApplicationContext保存了Bean对象(ClassPathXmlApplicationContext)
初始化ApplicationContext方式:
本地文件,classpath(相对路径:相对于工程的路径),web应用中依赖servlet或Listener
注入方式:设值注入、构造注入
需要set方法
Class:要实例化的类
Scope
Constructor arguments
Properties:属性
Autowiring mode:自动装配模式
lazy-initialization mode:懒加载模式
Initialization/destruction method:初始化、销毁方法
singleton(默认),prototype,request,session,global session
(bean容器:context)
②配置init-method
②配置destroy-method
①例:
②例:
三个方法同时使用时,默认的初始化不生效,实现接口的方法先于bean里面init-method和destroy-method方法执行(这两个都执行)
默认的全局初始化和销毁方法(③)可以有可以没有,其他两个没有时,它即使没有,系统也不会报错。
ApplicationContextAware,BeanNameAware……
可以借此方法得到相应ApplicationContext:
//与bean.xml文件中的bean一样
例子:
byname:在同一个IOC容器中,id必须为唯一的,不能重复
例:
default-autowire=”constructor”
例:
ResourceLoader参数:
@Repository,@Service,@Controller基于@Component,类似于子注解
context:annotation-config只查找在同一个applicationContext中的bean注解
默认情况下,@Autowired 注释意味着依赖是必须的,它类似于 @Required 注释,然而,你可以使用 @Autowired 的 (required=false) 选项关闭默认行为。
@order注解对List有效而对Map无效
Resource 通过名字注解注入
//@Configuration
StoreConfig配置:
config.xml加载config.properties文件:
config.properties:
spring介绍
IOC控制反转
1Bean容器初始化
2Spring注入
设值注入
构造注入
Bean
1Bean的配置项
2Bean的作用域Scope
3Bean的生命周期
初始化回调
销毁回调
配置全局默认初始化销毁方法
4Spring Bean装配之Aware接口
5Bean的自动装配Autowiring
byname要在引用的bean中有set方法和属性
byType与bean的id无直接的关系甚至可以删掉id
constructor构造方法
6Resource
Resources
ResourceLoader对Resource进行加载的类所有appliction context实现了该接口
例
Bean管理的注解实现
1Bean的定义及作用域
元注解注解的注解
类的自动检测bean的注册
contextannotation-config contextcomponent-scan
使用过滤器进行自定义扫描
定义bean
作用域
代理方式
2Autowired
成员变量构造器setter方法三者选其一 构造注入 set注入
可以listmap
QualifierResource
3基于Java的容器注解-
Bean
ImportResource Value
Bean Scope
4基于泛型的自动装配
5
1..spring介绍
框架通过配置方式来创建对象,管理对象之间依赖关系
spring的web层框架Spring MVC
控制反转IOC、面向切面AOP
把所有由它管理的对象叫做bean
2..IOC:控制反转
Java8中,接口可以拥有方法体DI:依赖注入是IOC一种实现方式。
IOC容器中,将所有对象称为Bean, 配置元数据
Spring对于Bean两种方式: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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="oneInte" class="com.imooc.ioc.interfaces.OneInterfaceImpl"> </bean> </beans>
(1)Bean容器初始化:
两个包:org.springframework.beans
org.springframework.context
BeanFactory提供配置结构和基本功能,加载并初始化Bean
ApplicationContext保存了Bean对象(ClassPathXmlApplicationContext)
初始化ApplicationContext方式:
本地文件,classpath(相对路径:相对于工程的路径),web应用中依赖servlet或Listener
(2)Spring注入:
Spring注入:在启动Spring容器加载bean配置时,完成对变量的赋值行为(即:创建bean的过程中,完成对变量的赋值行为)注入方式:设值注入、构造注入
设值注入
xml里:property name=”injectionDAO”…:name为类中名称,不为类型 。即:private InjectionDAO injectionDAO。需要set方法
构造注入
需要含那个参数的构造方法3..Bean:
(1)Bean的配置项:
IdClass:要实例化的类
Scope
Constructor arguments
Properties:属性
Autowiring mode:自动装配模式
lazy-initialization mode:懒加载模式
Initialization/destruction method:初始化、销毁方法
(2)Bean的作用域Scope:
scope=”singleton”…singleton(默认),prototype,request,session,global session
(bean容器:context)
(3)Bean的生命周期:
定义,初始化,使用,销毁初始化回调:
①实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法。②配置init-method
销毁回调:
①实现org.springframework.beans.factory.DisposableBean接口,覆盖destroy方法②配置destroy-method
①例:
<bean id="beanLifeCycle" class="com.imooc.lifestyle.BeanLifeCycle" ></bean> public class BeanLifeCycle implements InitializingBean,DisposableBean{ @Override public void destroy() throws Exception { System.out.println("bean destroy"); } @Override public void afterPropertiesSet() throws Exception { System.out.println("bean afterPropertiesSet"); } }
②例:
<bean id="beanLifeCycle" class="com.imooc.lifestyle.BeanLifeCycle" init-method="start" destroy-method="stop"></bean> package com.imooc.lifestyle; public class BeanLifeCycle { public void start() { System.out.println("bean start"); } public void stop() { System.out.println("bean stop"); } }
配置全局默认初始化、销毁方法:
(③)<?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 http://www.springframework.org/schema/beans/spring-beans.xsd" default-init-method="defaultInit" default-destroy-method="defaultDestroy"> <bean id="beanLifeCycle" class="com.imooc.lifestyle.BeanLifeCycle" ></bean> </beans>
public class BeanLifeCycle{ public void defaultInit() { System.out.println("bean defaultInit"); } public void defaultDestroy() { System.out.println("bean defaultDestroy"); } }
三个方法同时使用时,默认的初始化不生效,实现接口的方法先于bean里面init-method和destroy-method方法执行(这两个都执行)
默认的全局初始化和销毁方法(③)可以有可以没有,其他两个没有时,它即使没有,系统也不会报错。
(4)Spring Bean装配之Aware接口:
以Aware结尾的接口,得到相应资源。ApplicationContextAware,BeanNameAware……
可以借此方法得到相应ApplicationContext:
//与bean.xml文件中的bean一样
public class MoocApplicationContext implements ApplicationContextAware{ private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext=applicationContext; System.out.println("sdsd:"+applicationContext.getBean("moocApplicationContext").hashCode()); } }
public class MoocBeanName implements BeanNameAware{ @Override public void setBeanName(String name) { System.out.println("fsdfs:"+name);//xml文件中bean的id } }
例子:
public class MoocApplicationContext implements ApplicationContextAware,BeanNameAware{ //private ApplicationContext applicationContext; private String beanName; @Override public void setBeanName(String name) { this.beanName=name; System.out.println("beanName:"+name); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { //this.applicationContext=applicationContext; System.out.println("MoocApplicationContext:"+applicationContext.getBean(this.beanName)); } }
(5)Bean的自动装配(Autowiring):
No(默认),byname,byType,Constructorbyname:在同一个IOC容器中,id必须为唯一的,不能重复
byname:要在引用的bean中有set方法和属性
例:public class AutoWiringService { private AutoWiringDAO autoWiringDAO; public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) { this.autoWiringDAO = autoWiringDAO; } public void say(String word) { this.autoWiringDAO.say(word); } }
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName"> <!-- --> <!-- 不用写:<property name="autoWiringDAO" ref="autoWiringDAO"></property> --> <bean id="autoWiringService" class="com.imooc.autowiring.AutoWiringService"> </bean> <bean id="autoWiringDAO" class="com.imooc.autowiring.AutoWiringDAO"> </bean> </beans>
byType:与bean的id无直接的关系,甚至可以删掉id
将上面byname代码xml中一行改为:default-autowire=”byType”例:
public class AutoWiringService { private AutoWiringDAO autoWiringDAO; public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) { this.autoWiringDAO = autoWiringDAO; } public void say(String word) { this.autoWiringDAO.say(word); } }
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byType"> <bean id="autoWiringService" class="com.imooc.autowiring.AutoWiringService"> </bean> <bean class="com.imooc.autowiring.AutoWiringDAO"><!-- 无id --> </bean> </beans>
constructor:构造方法
因为是找构造器参数类型,与id无直接关系,可以删掉iddefault-autowire=”constructor”
例:
package com.imooc.autowiring; public class AutoWiringService { private AutoWiringD edb8 AO autoWiringDAO; public AutoWiringService(AutoWiringDAO autoWiringDAO) { System.out.println("AutoWiringService"); this.autoWiringDAO=autoWiringDAO; } public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) { this.autoWiringDAO = autoWiringDAO; } public void say(String word) { this.autoWiringDAO.say(word); } }
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="constructor"> <bean id="autoWiringService" class="com.imooc.autowiring.AutoWiringService"> </bean> <bean class="com.imooc.autowiring.AutoWiringDAO"><!-- 可无id --> </bean> </beans>
(6)Resource:
Resources:
针对资源文件的统一接口ResourceLoader:对Resource进行加载的类,所有appliction context实现了该接口
通过前面Awvare接口找applictioncontextResourceLoader参数:
例:
config.txtpublic class MoocResource implements ApplicationContextAware{ private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext=applicationContext; } public void resource() throws IOException { //Resource resource=applicationContext.getResource("classpath:config.txt"); //直接classpath:config.txt,因为config.txt所在路径被配置到了工程的classpath中 //(Java Build Path->Resource目录中) //Resource resource=applicationContext.getResource("file:E:\\Eclipse and Eclipse EE\\workplace for EE\\LearnSpring\\src\\config.txt"); //Resource resource=applicationContext.getResource("url:http://……"); Resource resource=applicationContext.getResource("config.txt"); //依赖于applicationContext,applicationContext为根据xml classpath创建出来的 System.out.println(resource.getFilename()); System.out.println(resource.contentLength()); } }
4..Bean管理的注解实现:
(1)Bean的定义及作用域:
@Component通用注解,可用于任何bean@Repository,@Service,@Controller基于@Component,类似于子注解
元注解:注解的注解
类的自动检测,bean的注册
context:annotation-config context:component-scan
在xml配置文件中配置:context:annotation-config只查找在同一个applicationContext中的bean注解
使用过滤器进行自定义扫描
定义bean:
作用域
代理方式:
scoped-proxy 默认为no(2)@Autowired:
成员变量,构造器,setter方法**:三者选其一 构造注入 set注入
@Autowired(required=false):默认情况下,@Autowired 注释意味着依赖是必须的,它类似于 @Required 注释,然而,你可以使用 @Autowired 的 (required=false) 选项关闭默认行为。
可以list,map**:
@order注解对List有效而对Map无效
//@Order(value=1) @Order(2) @Component public class BeanImplOne implements BeanInterface { }
@Qualifier,@Resource
缩小范围,指定到具体的bean@Qualifier("beanImplTwo") private BeanInterface beanInterface; //beanImplOne,beanImplTwo都实现了beanInterface接口
Resource 通过名字注解注入
(3)基于Java的容器注解—-:
@Bean
图上两种方式等效//@Configuration
@Configuration public class StoreConfig { // @Bean //name默认为方法名称 @Bean(name="stringstore",initMethod="init",destroyMethod="destroy")//应该在StringStore类里面 public Store StringStore() { return new StringStore(); } }
@ImportResource @Value
StoreConfig配置:
@Configuration @ImportResource("classpath:config.xml") public class StoreConfig { @Value("${url}") private String url; @Value("${jdbc.userName}") private String userName; @Value("${password}") private String password; @Bean public MyDriverManager myDriverManager() { return new MyDriverManager(url,userName,password); } // @Bean //name默认为方法名称 @Bean(name="stringstore",initMethod="init",destroyMethod="destroy")//应该在StringStore类里面 public Store StringStore() { return new StringStore(); } }
config.xml加载config.properties文件:
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath:/config.properties"/> </beans>
config.properties:
#Created by JInto - www.guh-software.de #Sun Aug 10 16:25:57 CST 2014 jdbc.userName=root password=root url=127.0.0.1
@Bean @Scope
(4)基于泛型的自动装配:
(5)
5..
相关文章推荐
- SpringBoot 控制器知识点总结
- spring小知识点总结
- spring知识点总结
- Spring知识点总结_思维导图
- spring 源码分析及知识点总结
- spring知识点总结:
- Spring知识点总结(三)之注解方式实现IOC和DI
- Spring知识点总结(一)
- Spring知识点总结
- Spring知识点总结大全
- spring知识点总结
- Spring面试知识点总结
- Spring知识点总结(二)之Spring IOC
- Spring面试知识点总结
- Spring面试知识点总结
- Spring IOC知识点总结
- Spring知识点总结
- Spring知识点总结大全
- Spring知识点总结-3
- Spring知识点总结