- 浏览: 51357 次
文章分类
- 全部博客 (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 458在springmvc的配置文件中加入 <mvc:reso ... -
menu模块的自关联查询
2016-04-27 10:16 627<!-- 针对菜单的父子关系,定义的树状结构Result ... -
spring配置文件快速查找
2016-04-12 21:20 380<!--spring 扫包 @Service ... ... -
spring mvc整合mybatis
2016-04-06 15:30 4241.spring配置文件: applicationContex ... -
spring 泛型
2016-04-05 13:23 453Spring4.0可以为子类注入子类的泛型类型,成员变量的引用 ... -
hibernate 事务
2016-03-07 11:10 4421.新建java(maven)普通工程 2.配置maven, ... -
spring jdbc 事务
2016-03-04 18:04 477使用事务 一.配置文件 ... -
spring hibernate
2016-03-04 10:31 3251. Spring 整合 Hibernate 整合什么 ? ... -
spring mvc参数传递
2016-03-02 20:50 5431.使用HttpServletRequest request ... -
spring mvc 处理器映射的三种方式
2016-03-02 15:04 6321.通过beanname 配置springmvc-servl ... -
spring mvc 注解实例
2016-03-02 11:29 4081.web.xml <?xml version=&qu ... -
spring mvc 完整实例
2016-03-01 19:50 5881.新建工程,把spring所需的包copy到工程里 2.配置 ... -
spring jdbc完整实例
2016-02-29 21:36 384StudentDAO.java package com.jd ... -
spring aop 完整实例
2016-02-29 16:10 396Employe.java package com.aop; ...
相关推荐
这是学习spring时整理的学习笔记,里面都是spring框架的一些基础知识和核心技术。
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
《Spring技术内幕》学习笔记1——IoC容器体系结构 《Spring技术内幕》学习笔记2——IoC定位Bean定义资源 《Spring技术内幕》学习笔记3——IoC容器载入Bean定义资源文件 ...《Spring技术内幕》学习笔记7——AOP基础
Spring MVC基础学习笔记。无论对于SPRING MVC初学者还是想要加深的人来说这都是一本不错的笔记。
Spring.NET学习笔记:资源有源代码程序及文档说明,基础篇、应用篇、扩展集成、企业架构体系实战等;基础篇包括:控制反转,环境搭建,实现简易IOC框架,对象的创建,容器中对象作用域,依赖注入,依赖对象的注入,...
Spring学习笔记,包含了sping学习所有知识点,和例子一个综合的学习总结
Spring项目启动于2003年2月,其中基础代码来自《expert one-on-one j2ee design and development》。 Spring 是指一个用于构造Java 应用程序的轻量级框架,不限定于只编写web 应用,最少侵入。 Spring 的核心是...
spring基础学习笔记,新人可以看看,配合黑马视频看啊啊啊
spring 的学习笔记,很详细,从最基础讲起。含盖了spring 基本上所有方面。真的很值得学习。
struts与hibernate集成原理,基础知识补充AOP,编程式事务,声明式事务,spring注入学习笔记
狂神说Java——Spring学习笔记 内容概要: 1、了解什么是Spring 2、IOC 3、Spring配置 4、依赖注入 5、Bean的自动装配 6、注解开发 7、代理模式 8、AOP 能学到什么:详细了解Spring基础以及使用 阅读建议: 建议配合...
此笔记由本人跟随尚学堂教师一步一讲解梳理出来的 网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。 API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理...
《Spring Boot 进阶笔记(详细全面) 中文PDF完整版.pdf》是一份非常实用的Spring Boot进阶学习资料,适用于已经掌握基础知识的开发者,希望深入学习Spring Boot框架的高级应用。 本资料主要包含了Spring Boot的高级...
Spring5学习教程视频https://www.bilibili.com/video/av33077509/?p=2 的笔记和代码
Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)... 本文件包含了Spring的基础课件笔记和本人的学习标注。
Spring SpringMVC JdbcTemplate
刘冬编写的Spring.NET整合NHibernate例子 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/18/SpringNet_NHibernate.html
内容概要:学习Spring的一些学习笔记,主要学习Spring 框架两大核心机制(IoC、AOP) 笔记大纲:阅读笔记可以学习了解一下内容 如何使用 IoC ;配置文件;IoC 底层原理;通过运行时类获取 bean;通过有参构造创建 ...
创建对象一般有3种方式:1.构造器创建,2.静态工厂创建,3.实例工厂创建 多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。...通过实例都你从最基础的实例化一个对象到容器管理.
Spring.NET事务配置模板。 原文出处:http://www.cnblogs.com/GoodHelper/archive/2009/11/16/SpringNet_Transaction.html