- 浏览: 53888 次
文章分类
- 全部博客 (98)
- openstack (14)
- spring+hibernate+jdbc (15)
- dashboard (1)
- Python (3)
- nova (2)
- ubuntu (1)
- Linux (2)
- apache (1)
- openstack,错误 (1)
- Windows (1)
- horizon (1)
- websocket (1)
- java (2)
- mybatis (4)
- quartz (2)
- git (1)
- spring,错误 (1)
- angularJS (8)
- redis (2)
- vim (1)
- virsh (1)
- jsp (1)
- react (1)
- openstack,openstack安装 (4)
- 社区 (1)
最新评论
-
haoningabc:
前后端都会啊,全栈女神啊
angularJS 弹出层 -
haoningabc:
好厉害,偶像
openstack安装--keystone
OR M
O:对象,自己定义一个class,属性为private ,set与get方法
R:relational关系型数据库
M:mapping。*.hbm.cfg定义类与表的映射,变量与字段的映射,当没有column字段时,默认column=name
-----------------------
读取配置文件:(整个工程只初始化一次)
--------------
---------------------------------------------------------
在*.xml配置文件中设置bean
内部bean
赋值为null:
级联属性赋值(内部类的属性):属性需要先初始化后,才可以为级联属性赋值,否则处异常
-------------------------------------------------------
配置集合属性
------------
使配置map属性
-------------
-------------
配置单例的集合bean
------------
p:命名空间
---------------
配置properties属性值
Properties类
private Properties properties;
-------------------------------------------------------
获取bean
首先获取IOC容器ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
即:加载配置文件,获取IOC容器后,系统会自动执行配置文件中bean的set方法和构造函数
HelloWorld hello=(HelloWorld) ctx.getBean(HelloWorld.class); //通过类名
Constructor1 con=(Constructor1) ctx.getBean("book2");//通过id
--------------------------------------------------------
自动装配
autowire=""
byName:set方法的名字bean的id //map bean不能自动装配
byType:class的类型。只能有一个bean
-----------------------------------------------------------
配置的继承parent parent="person"
abstract="True" 抽象bean不能被实例化
如果没有指定class,必须要设置abstract="True"
子类重写父类的property时,只能用父类已经用过的属性
bean直接的依赖
depends-on="某个bean的id
-----------------------------------------------------------
bean的作用域
使用<bean></bean>是默认是sscope=ingleton单例,每次调用都是同一个bean
设置scope属性prototype(原型)每次用bean时,都是产生一个新的bean,初始化IOC容器时,并不初始化该bean
-----------------------------------------------------------
使用外部属性文件
spring要连接数据库,需要配置dataSource bean,class="系统的datasource"
<!-- 导入资源文件 -->
${var}
--------------------------------------------------------------
spring语言表达式:SpEL
#{...} //...代表SpEL,动态赋值
value="#{'gggggggg'}" //直接赋值
T():引用系统函数
#{T(java.lang.Math).PI * 80}
-----------------------------------------------------------------
bean生命周期
init-method="init" //自己写初始化和销毁方法
destroy-method="destroy"
ClassPathXmlApplicationContext对象有个close方法
ApplicationContext没有close方法
bean的后置处理器:不需要配置id,IOC容器自动识别
MyBeanPostProcessor继承BeanPostProcessor接口,实现方法postProcessAfterInitialization与postProcessBeforeInitialization(Object bean, String beanName)
配置文件:
-----------------------------------------------------------------------------------
通过调用静态工厂方法创建 Bean
配置文件:
main函数
----------------------------
通过调用实例工厂方法创建 Bean
配置文件:
<!-- 配置实例工厂 -->
------------------------------------------------------------------
通过FactoryBean配置bean
-------------------------------------------------------------------
配置扫描包,多个包用“,”分隔
<context:component-scan base-package="com.zou.service"></context:component-scan>
@Component: 基本注解, 标识了一个受 Spring 管理的组件
@Respository: 标识持久层组件
@Service: 标识服务层(业务层)组件
@Controller: 标识表现层组件
resource-pattern :过滤包
<context:include-filter> 子节点表示要包含的目标类
<context:exclude-filter> 子节点表示要排除在外的目标类
<context:component-scan> 下可以拥有若干个 <context:include-filter> 和 <context:exclude-filter> 子节点
A类引用B类,在B类上加 @Autowired (@Resource 、@Inject)
@Autowired 注解自动装配具有兼容类型的单个 Bean属性
构造器, 普通字段(即使是非 public), 一切具有参数的方法都可以应用@Authwired 注解
默认情况下, 所有使用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时, 会抛出异常, 若某一属性允许不被设置, 可以设置 @Authwired 注解的 required 属性为 false
默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 此时可以在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 @Qualifiter 已指定注入 Bean 的名称
@Authwired 注解也可以应用在数组类型的属性上, 此时 Spring 将会把所有匹配的 Bean 进行自动装配.
@Authwired 注解也可以应用在集合属性上, 此时 Spring 读取该集合的类型信息, 然后自动装配所有与之兼容的 Bean.
@Authwired 注解用在 java.util.Map 上时, 若该 Map 的键值为 String, 那么 Spring 将自动装配与之 Map 值类型兼容的 Bean, 此时 Bean 的名称作为键值
O:对象,自己定义一个class,属性为private ,set与get方法
R:relational关系型数据库
M:mapping。*.hbm.cfg定义类与表的映射,变量与字段的映射,当没有column字段时,默认column=name
-----------------------
读取配置文件:(整个工程只初始化一次)
Configuration cfg=new Configuration(); cfg.configure("config.cfg.xml"); SessionFactory sessionFactory=cfg.buildSessionFactory();
--------------
模板代码 Session session=null; Transaction tx=null; try{ session=sessionFactory.openSession(); tx=session.beginTransaction(); ..............代码 tx.commit(); }catch(Exception e){ if(tx!=null){ tx.rollback(); } throw e; }finally{ if(session!=null)session.close(); }
---------------------------------------------------------
在*.xml配置文件中设置bean
<bean id="helloWorld" class="spring.bean.HelloWorld"> <!-- 为属性赋值 ,通过set方法--> <property name="name" value="zouhuiying"></property> </bean> <bean id="book" class="spring.bean.Constructor1"> <!--通过构造方法赋值--> <constructor-arg value="math"></constructor-arg> <constructor-arg value="180"></constructor-arg> <!--通过index(构造方法中变量的索引)标识,或者type(变量的类型)--> </bean> ![CDATA[]]特殊字符 <value></value>: <bean id="book" class="spring.bean.Constructor1"> <constructor-arg> <value>![CDATA[<math^>]]</value> </constructor-arg> </bean>
内部bean
<bean id="" class=""> <property name=""> <!--内部bean不能被外部使用,所以可以不加id属性--> <bean class=""> <constructor-arg> <value><![CDATA[<math>*]]></value> </constructor-arg> </bean> </property> </bean>
赋值为null:
<constructor-arg><null/></constructor-arg>
级联属性赋值(内部类的属性):属性需要先初始化后,才可以为级联属性赋值,否则处异常
-------------------------------------------------------
配置集合属性
list<car> <property name=""> <list> <ref bean="" /> </list> </property>
------------
使配置map属性
<property name=""> <map> <entry key="" value-ref=""> </entry> </map> </property>
-------------
<bean> <property> <props> <prop key="">value</prop> <prop key="">value</prop> </props> </property> </bean>
-------------
配置单例的集合bean
<property name="car" ref="cars"> <util:list id="cars"> <ref bean="car1"/> <ref bean="car2"/> </util:list>
------------
p:命名空间
xmlns:p="http://www.springframework.org/schema/p" <bean id="person2" class="spring.bean.Person" p:name="baobao" p:age="23" p:car-ref="car1" />
---------------
配置properties属性值
Properties类
private Properties properties;
<bean id ="datasource" class="spring.bean.DataSource"> <property name="properties"> <props> <prop key="user">root</prop> <prop key="password">zouhuiying</prop> </props> </property> </bean>
-------------------------------------------------------
获取bean
首先获取IOC容器ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
即:加载配置文件,获取IOC容器后,系统会自动执行配置文件中bean的set方法和构造函数
HelloWorld hello=(HelloWorld) ctx.getBean(HelloWorld.class); //通过类名
Constructor1 con=(Constructor1) ctx.getBean("book2");//通过id
--------------------------------------------------------
自动装配
autowire=""
byName:set方法的名字bean的id //map bean不能自动装配
byType:class的类型。只能有一个bean
-----------------------------------------------------------
配置的继承parent parent="person"
abstract="True" 抽象bean不能被实例化
如果没有指定class,必须要设置abstract="True"
子类重写父类的property时,只能用父类已经用过的属性
bean直接的依赖
depends-on="某个bean的id
-----------------------------------------------------------
bean的作用域
使用<bean></bean>是默认是sscope=ingleton单例,每次调用都是同一个bean
设置scope属性prototype(原型)每次用bean时,都是产生一个新的bean,初始化IOC容器时,并不初始化该bean
-----------------------------------------------------------
使用外部属性文件
spring要连接数据库,需要配置dataSource bean,class="系统的datasource"
<!-- 导入资源文件 -->
<context:property-placeholder location="classpath:db.properties"/>
${var}
--------------------------------------------------------------
spring语言表达式:SpEL
#{...} //...代表SpEL,动态赋值
value="#{'gggggggg'}" //直接赋值
T():引用系统函数
#{T(java.lang.Math).PI * 80}
-----------------------------------------------------------------
bean生命周期
init-method="init" //自己写初始化和销毁方法
destroy-method="destroy"
ClassPathXmlApplicationContext对象有个close方法
ApplicationContext没有close方法
public static void main(String[] args) { // TODO Auto-generated method stub ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beanss.xml"); Car car=(Car) ctx.getBean("car"); System.out.println(car); ctx.close(); }
<bean id="car" class="spring.beans.Car" p:brand="Audi" p:color="red" init-method="init" destroy-method="destroy" />
bean的后置处理器:不需要配置id,IOC容器自动识别
MyBeanPostProcessor继承BeanPostProcessor接口,实现方法postProcessAfterInitialization与postProcessBeforeInitialization(Object bean, String beanName)
配置文件:
<bean class="spring.beans.MyBeanPostProcessor" />
-----------------------------------------------------------------------------------
通过调用静态工厂方法创建 Bean
class Car public class StaticFactory { private static Map<String, Car> cars=new HashMap<String, Car>(); static{ cars.put("car1", new Car("house","red")); cars.put("car2", new Car("audi","white")); } public static Car getCar(String name){ return cars.get(name); //调用的是car的工厂方法 } }
配置文件:
<bean id="car1" class="springfactory.StaticFactory" factory-method="getCar"> <constructor-arg value="car1"></constructor-arg> </bean>
main函数
ApplicationContext ctx=new ClassPathXmlApplicationContext("factory.xml"); Car car=(Car)ctx.getBean("car1"); System.out.println(car);
----------------------------
通过调用实例工厂方法创建 Bean
public class InstanceFactory { private Map<String, Car> cars=null; public InstanceFactory() { super(); cars=new HashMap<String, Car>(); cars.put("one", new Car("ford","yellow")); cars.put("two", new Car("anta","green")); } public Car getCar(String name) { return cars.get(name); }
配置文件:
<!-- 配置实例工厂 -->
<bean id="factory" class="springfactory.InstanceFactory"></bean> <bean id="car2" factory-bean="factory" factory-method="getCar"> <constructor-arg value="two"></constructor-arg> </bean>
------------------------------------------------------------------
通过FactoryBean配置bean
-------------------------------------------------------------------
配置扫描包,多个包用“,”分隔
<context:component-scan base-package="com.zou.service"></context:component-scan>
@Component: 基本注解, 标识了一个受 Spring 管理的组件
@Respository: 标识持久层组件
@Service: 标识服务层(业务层)组件
@Controller: 标识表现层组件
resource-pattern :过滤包
<context:include-filter> 子节点表示要包含的目标类
<context:exclude-filter> 子节点表示要排除在外的目标类
<context:component-scan> 下可以拥有若干个 <context:include-filter> 和 <context:exclude-filter> 子节点
A类引用B类,在B类上加 @Autowired (@Resource 、@Inject)
@Autowired 注解自动装配具有兼容类型的单个 Bean属性
构造器, 普通字段(即使是非 public), 一切具有参数的方法都可以应用@Authwired 注解
默认情况下, 所有使用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时, 会抛出异常, 若某一属性允许不被设置, 可以设置 @Authwired 注解的 required 属性为 false
默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 此时可以在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 @Qualifiter 已指定注入 Bean 的名称
@Authwired 注解也可以应用在数组类型的属性上, 此时 Spring 将会把所有匹配的 Bean 进行自动装配.
@Authwired 注解也可以应用在集合属性上, 此时 Spring 读取该集合的类型信息, 然后自动装配所有与之兼容的 Bean.
@Authwired 注解用在 java.util.Map 上时, 若该 Map 的键值为 String, 那么 Spring 将自动装配与之 Map 值类型兼容的 Bean, 此时 Bean 的名称作为键值
发表评论
-
springmvc获取js文件失败
2016-05-03 19:18 482在springmvc的配置文件中加入 <mvc:reso ... -
menu模块的自关联查询
2016-04-27 10:16 663<!-- 针对菜单的父子关系,定义的树状结构Result ... -
spring配置文件快速查找
2016-04-12 21:20 406<!--spring 扫包 @Service ... ... -
spring mvc整合mybatis
2016-04-06 15:30 4561.spring配置文件: applicationContex ... -
spring 泛型
2016-04-05 13:23 474Spring4.0可以为子类注入子类的泛型类型,成员变量的引用 ... -
hibernate 事务
2016-03-07 11:10 4791.新建java(maven)普通工程 2.配置maven, ... -
spring jdbc 事务
2016-03-04 18:04 499使用事务 一.配置文件 ... -
spring hibernate
2016-03-04 10:31 3511. Spring 整合 Hibernate 整合什么 ? ... -
spring mvc参数传递
2016-03-02 20:50 5701.使用HttpServletRequest request ... -
spring mvc 处理器映射的三种方式
2016-03-02 15:04 6581.通过beanname 配置springmvc-servl ... -
spring mvc 注解实例
2016-03-02 11:29 4381.web.xml <?xml version=&qu ... -
spring mvc 完整实例
2016-03-01 19:50 6161.新建工程,把spring所需的包copy到工程里 2.配置 ... -
spring jdbc完整实例
2016-02-29 21:36 408StudentDAO.java package com.jd ... -
spring aop 完整实例
2016-02-29 16:10 430Employe.java package com.aop; ...
相关推荐
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。
马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...
标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...
通过学习Spring框架的学习笔记,开发者能够掌握Spring框架的基础知识和高级特性,应用到实际的企业级应用开发中去。对于希望深入学习Java企业级开发的开发者而言,Spring框架是必须要掌握的重要技术。
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...
根据提供的压缩包文件名,我们可以推测这是一个逐步学习Spring的系列笔记。从"Spring_day1"开始,可能涵盖了Spring的基础概念、环境搭建和基本配置。"Spring_day2"可能涉及了依赖注入和AOP的深入讲解。"Spring_day3...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
以下将详细介绍Spring学习笔记中的主要知识点。 **面向抽象编程** 面向抽象编程是一种设计原则,强调在代码中使用接口或抽象类,而不是具体实现类。这使得系统更具有灵活性,易于扩展和维护。在Spring框架中,我们...
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
以上内容涵盖了Spring框架的关键知识点,从IoC和DI的使用,到AOP和资源管理,再到强大的SpEL表达式语言,这些都是理解和掌握Spring框架所必备的基础。通过深入学习这些内容,不仅有助于日常开发,也能为面试做好充分...
### 学习笔记:尚硅谷Spring6基础篇 #### 一、Spring框架概述 ##### 1.1 Spring是什么? Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立。Spring的主要目标是简化Java企业级...
1. Spring Boot基础:了解什么是Spring Boot,以及它的优点,例如内置服务器、生产就绪特性(监控、健康检查、外部化配置等)。 2. Spring Boot Hello World:学习如何通过简单的几步创建一个Spring Boot应用,这...
总的来说,这篇Spring 2.5学习笔记涵盖了Spring的基础知识,如面向抽象编程、Jdom使用、Spring环境搭建以及核心特性IOC和DI的实现。同时,它也涉及到了SSH整合的相关内容,为开发者提供了全面学习Spring以及如何与...
11. **Spring Cloud Starters**:是基于 Spring Boot 的基础组件,提供了一组模块化的依赖,方便快速构建 Spring Cloud 应用。 12. **Spring Cloud CLI**:Spring Boot 的命令行接口插件,用于快速创建 Spring ...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...
【Spring 2.5 学习笔记】 在深入学习Spring 2.5的过程中,我们可以了解到一系列关键的概念和技术。首先,面向抽象编程是Spring的核心理念之一,它鼓励开发者编写可重用且松散耦合的代码,通过接口而非具体实现进行...