Spring中xml的配置
spring4.x + hibernate4.x 配置详解

spring4.x + hibernate4.x 配置详解关于spring和hibernate的使用以及特征等等,在此不再啰嗦,相信大家也都知道,或者去搜索一下即可。
本篇博文的内容主要是我最近整理的关于spring4.x 和hibernate 4.x 相关配置和使用方式,当然spring3.x以及hibernate4.x也可以借鉴。
首先是配置文件web.xml 增加以下代码即可<!-- 加载spring相关的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/applicationContext.xml</param-value> </context-param><!-- 启用spring监听--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</l istener-class></listener>然后建立 applicationContext.xml 文件,src下。
文件内容如下,注释我尽量写的很详细<beans xmlns:xsi="/2001/XMLSchema-instance"xmlns="/schema/beans"xmlns:aop="http://ww /schema/aop"xmlns:context="/schema/context"xmlns:tx="ht tp:///schema/tx"xmlns:cache="/schema/cache"xmlns:p="http:// /schema/p"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-4.0.xsd/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd/schema/cache http://www.springframewor /schema/cache/spring-cache-4.0.xsd"><!-- 引入properties文件--><context:property-placeholder location="classpath*:/appConfig.properties"/> <!-- 定义数据库连接池数据源bean destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用--> <bean id="dataSource"class="boPooledDataSourc e"destroy-method="close"><!-- 设置JDBC驱动名称--><property name="driverClass"value="${jdbc.driver}"/><!-- 设置JDBC连接URL --><property name="jdbcUrl"value="${jdbc.url}"/><!-- 设置数据库用户名--><property name="user"value="${ername}"/><!-- 设置数据库密码--><property name="password"value="${jdbc.password}"/><!-- 设置连接池初始值--><property name="initialPoolSize"value="5"/></bean><!-- 配置sessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-- 数据源--><property name="dataSource"ref="dataSource"/><!-- hibernate的相关属性配置--><property name="hibernateProperties"><value><!-- 设置数据库方言-->hibernate.dialect=org.hibernate.dialect.MySQLDialect<!-- 设置自动创建|更新|验证数据库表结构-->hibernate.hbm2ddl.auto=update<!-- 是否在控制台显示sql -->hibernate.show_sql=true<!-- 是否格式化sql,优化显示-->hibernate.format_sql=true<!-- 是否开启二级缓存-->e_second_level_cache=false<!-- 是否开启查询缓存-->e_query_cache=false<!-- 数据库批量查询最大数-->hibernate.jdbc.fetch_size=50<!-- 数据库批量更新、添加、删除操作最大数-->hibernate.jdbc.batch_size=50<!-- 是否自动提交事务-->hibernate.connection.autocommit=true<!-- 指定hibernate在何时释放JDBC连接-->hibernate.connection.release_mode=auto<!-- 创建session方式hibernate4.x 的方式-->hibernate.current_session_context_class=org.springframework.or m.hibernate4.SpringSessionContext<!-- javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包所以把它设置为none即可-->javax.persistence.validation.mode=none</value></property><!-- 自动扫描实体对象tdxy.bean的包结构中存放实体类--><property name="packagesToScan"value="tdxy.bean"/> </bean><!-- 定义事务管理--><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager "><property name="sessionFactory"ref="sessionFactory"/> </bean><!-- 定义Autowired 自动注入bean --><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotati onBeanPostProcessor"/><!-- 扫描有注解的文件base-package 包路径--><context:component-scan base-package="tdxy"/><tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><!-- 事务执行方式REQUIRED:指定当前方法必需在事务环境中运行,如果当前有事务环境就加入当前正在执行的事务环境,如果当前没有事务,就新建一个事务。
LogBack.xml文件配置

LogBack.xml⽂件配置Logback-spring.xml配置⽂件1、⽇志级别:⽇志级别从低到⾼分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,例如:如果设置为WARN,则低于WARN 的信息都不会输出2、根节点:configuration configuration 有三个可选属性: a、scan属性:⽤来设置配置⽂件变动时是否重新加载,值是true\false,默认是true即配置变动时重新加载 b、scanperiod属性:⽤来设置每隔多久检查⼀次配置是否变动,默认是1分钟,默认单位是毫秒 c、debug属性:⽤来设置是否将logback内部的⽇志打印出来,即启动时输出配置加载信息。
值为true\false 默认为false3、property节点: 设置要使⽤的或者共⽤的变量,property包含两个属性name和value;其中name的值是变量的名称,value的值是变量所代表的值。
<property>定义的值可以使⽤“${变量名}”到logger上下⽂中。
4、springProperty节点该标签的⼯作⽅式类似于Logback的标准<property>标签。
但是,value您⽆需指定direct,⽽是指定source属性的(来⾃Environment)。
如果需要将属性存储在local范围之外的其他位置,则可以使⽤该scope属性。
如果需要后备值(如果未在中设置属性Environment),则可以使⽤defaultValue属性。
5.appender节点appender节点可以有多个,分别针对不同的包或者类做不同的输出,如果appender输出到⽂件时,可以设置append⼦节点值true/false,是末尾追加⽇志还是替换⽇志,值为true时表⽰追加。
可以在appender中使⽤filter节点(过滤器),在此节点内过滤⽇志级别(使⽤level节点指定),过滤后会返回⼀个枚举值,即DENY,NEUTRAL,ACCEPT其中之⼀: A、返回DENY,⽇志将⽴即被抛弃不再经过其他过滤器; B、返回NEUTRAL,有序列表⾥的下个过滤器接着处理⽇志; C、返回ACCEPT,⽇志会被⽴即处理,不再经过剩余过滤器 如果需要使⽤这些值做处理时,需要使⽤onMatch(level级别或⼤于level级别的)和onMismatch(级别⼩于level级别的)6、logger节点⽤来设置某⼀个包或者具体的某⼀个类的⽇志打印级别、以及指定appender。
【SpringFramework】Spring入门教程(三)使用注解配置

【SpringFramework】Spring⼊门教程(三)使⽤注解配置本⽂主要介绍四个⽅⾯:(1) 注解版本IOC和DI(2) Spring纯注解(3) Spring测试(4) SpringJDBC - Spring对数据库的操作使⽤注解配置Spring⼊门说在前⾯学习基于注解的IoC配置,⼤家脑海⾥⾸先得有⼀个认知,即注解配置和xml配置要实现的功能都是⼀样的,都是要降低模块间的耦合度。
仅仅只是配置的形式不⼀样。
关于实际的开发中到底使⽤xml还是注解,每家公司有着不同的使⽤习惯。
所以这两种配置⽅式我们都需要掌握。
基于注解配置的⽅式也已经逐渐代替xml配置。
所以我们必须要掌握使⽤注解的⽅式配置Spring。
配置步骤注意:如果使⽤Eclipse需要先安装了STS插件,或者使⽤STS开发⼯具创建项⽬。
本⽂使⽤IDEA进⾏演⽰。
1.2.1. 第⼀步:拷贝必备jar包到⼯程的lib⽬录。
注意:在基于注解的配置中,我们还要多拷贝⼀个aop的jar包。
如下图:1.2.2. 第⼆步:在类的根路径下创建⼀个任意名称的xml⽂件(不能是中⽂)注意:基于注解整合时,Spring配置⽂件导⼊约束时需要多导⼊⼀个context命名空间下的约束。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd"></beans>1.2.3. 第⼆步:创建⼀个服务类创建⼀个测试的服务类,并且加⼊使⽤@Component注解,声明该类允许注⼊到Spring容器package org.cjw.service;import ponent;/*使⽤注解配置时,需要将Spring框架启动就创建对象的类表⽰为组件类表⽰组件类使⽤@Component注解*/@Componentpublic class CustomerService {public void save() {System.out.println("-保存数据-");}}1.2.4. 第四步在spring的配置⽂件加⼊扫描注解<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd"><!-- 声明扫描包及其⼦包的类,如果发现有组件注解的类,就创建对象并加⼊到容器中去 --><context:component-scan base-package="org.cjw" /></beans>1.2.5. 第五步:测试调⽤代码package org.cjw.test;import org.cjw.service.CustomerService;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class CustomerServiceTest {@Testpublic void testSave() {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");CustomerService customerService = context.getBean(CustomerService.class);customerService.save();}}--测试结果,如果可以调⽤服务⽅法,测试成功。
IDEA中Spring配置错误:classpathresource[.xml]cannot。。。
![IDEA中Spring配置错误:classpathresource[.xml]cannot。。。](https://img.taocdn.com/s3/m/e2135811b42acfc789eb172ded630b1c59ee9bb7.png)
IDEA中 Spring配置错误: classpathresource[.xml]cannot。。。
IDEA中 Spring配 置 错 误 : class path resource [.xml] cannot be opened because it does not exist
获取配置文件。 ClassPathXmlApplicationContext()方法是在其所在的目录中寻找 .xml 配置文件。
注意: 这里指的是编译后的 .class 文件所在的目录,不是 .java 文件
解决
点击 File -> Project Structure,选择Modules -> Paths -> Output Paths 修改为 applicationContext.xml 文件所在目录。
运行 Spring 项目出现类似下面的错误信息
class path resource [applicationContext.xml] cannot be opened because it does not exist
翻译:没有找到你的 .xml 配置文件 原因
在Test测试类中我使用的是:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
(D)springboot使用注解类代替xml配置实例化bean

(D)springboot使⽤注解类代替xml配置实例化beanbean经常需要被实例化,最常见的就是new⼀个呗,Bean bean = new Bean(),⽅便好⽤还快捷。
然⽽在我们刚开始学习写i项⽬的时候却发现,new不好⽤哦,并且也不报错,根本不知道怎么找原因⽐如package com.example;import org.springframework.boot.Banner;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import com.example.bean.Book;import com.example.demo.test.TestConfiguration;@SpringBootApplicationpublic class Application{public static void main(String[] args) {SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);//修改Banner的模式为OFF,启动时控制台将不打印显⽰字符wowbuilder.bannerMode(Banner.Mode.OFF).run(args);Book bookconfig = new Book();System.out.println( "emmmm..... The BookName is "+bookconfig.getName()+";and Book Author is "+bookconfig.getAuthor()+";and Book price is "+bookconfig.getPrice());//SpringApplication.run(Application.class, args);//默认启动⽅式}}控制台打印的却是打印出来是null,可见实例化了⼀个bookconfig,却并没有从属性⽂件中读到属性值。
SpringMVC目录结构配置

SpringMVC目录结构配置SpringMVC是一种常见的Java Web框架,它遵循MVC(Model-View-Controller)设计模式,用于构建灵活可扩展的Web应用程序。
SpringMVC的目录结构对于项目的开发和维护非常重要,下面会详细介绍SpringMVC的标准目录结构以及配置方式。
1.标准目录结构1.1 src/main/java:主要用于存放Java源代码。
1.2 src/main/resources:主要用于存放配置文件和资源文件。
1.3 src/main/webapp:主要用于存放Web应用的静态资源。
1.4 src/test/java:主要用于存放测试用例的Java源代码。
1.5 src/test/resources:主要用于存放测试用例的配置文件和资源文件。
2.详细解析2.1 src/main/java目录src/main/java目录是存放Java源代码的默认目录,它包括以下几个子目录:- config:用于存放Spring配置类,如配置数据库连接、配置事务管理等。
- interceptor:用于存放SpringMVC的拦截器。
- model:用于存放数据模型相关的实体类。
- util:用于存放工具类。
- web:用于存放SpringMVC的控制器。
2.2 src/main/resources目录src/main/resources目录是存放配置文件和资源文件的默认目录,它包括以下几个子目录:- static:用于存放静态资源文件,如CSS、JavaScript、图片等。
- templates:用于存放模板文件,如HTML、Thymeleaf模板等。
- application.properties:存放项目的配置信息,如数据库配置、端口配置等。
- logback.xml:存放日志配置,如日志级别、输出路径等。
- mapper:存放MyBatis的Mapper.xml文件。
Spring中配置DataSource的六种方式

Spring中配置DataSource的六种⽅式第⼀种:beans.xmlXml代码1. <bean id="dataSource" class="mons.dbcp.BasicDataSource"2. destroy-method="close">3. <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />4. <property name="url"5. value="jdbc:sqlserver://localhost:1433;DatabaseName=spring" />6. <property name="username" value="sa" />7. <property name="password" value="********" />8. </bean>第⼆种:beans.xml<bean id="mappings"Xml代码1. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">2. <property name="locations" value="classpath:jdbc.properties"></property>3. </bean>4. <bean id="dataSource" class="mons.dbcp.BasicDataSource"5. destroy-method="close">6. <property name="driverClassName" value="${jdbc.driverClassName}" />7. <property name="url" value="${jdbc.url}" />8. <property name="username" value="${ername}" />9. <property name="password" value="${jdbc.password}" />10. </bean>在src⽂件夹⾥新建⼀个jdbc.properties⽂件,⾥⾯的内容为如下:Xml代码1. jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver2. jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring3. ername=sa4. jdbc.password=********第三种:beans.xmlXml代码1. <bean id="mappings"2. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">3. <property name="locations" value="classpath:jdbc.properties"></property>4. </bean>5. <bean id="dataSource" class="mons.dbcp.BasicDataSource"6. destroy-method="close">7. <property name="driverClassName" value="${jdbc.driverClassName}" />8. <property name="url" value="${jdbc.url}" />9. <property name="username" value="${ername}" />10. <property name="password" value="${jdbc.password}" />11. </bean>12.13. <context:property-placeholder location="classpath:jdbc.properties" />在src⽂件夹⾥新建⼀个jdbc.properties⽂件,⾥⾯的内容为如下:14. jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver15. jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring16. ername=sa17. jdbc.password=********其中第⼆种与第三种类似,只是指定配置⽂件的⽅法不⼀样。
beans.xml 用法

beans.xml 用法beans.xml 是Spring 框架中用于配置Beans 的XML 文件。
这个文件是Spring 容器启动时读取的主要配置文件,它包含了定义在Spring 容器中的Bean 对象的配置信息。
以下是 beans.xml 的基本用法:1.定义Bean: 在 beans.xml 中,你可以使用 <bean> 元素来定义一个Bean。
例如:这里,id 属性是Bean 的唯一标识符,class 属性指定了Bean 的完整类名。
2. 配置属性: 你可以在 <bean> 元素内部使用 <property> 元素来配置Bean 的属性。
例如:这里,name 属性指定属性的名称,value 属性指定属性的值。
3. 依赖注入: Spring 支持自动装配(autowiring),允许一个Bean 注入另一个Bean。
你可以使用 autowire 属性来指定注入方式。
例如:在上面的例子中,exampleBean2 自动装配了 exampleBean1。
4. 配置多个Bean: 你可以在同一个 <beans> 元素中配置多个Bean。
例如:1.作用域: 使用 <bean> 元素的 scope 属性,你可以指定Bean 的作用域(如"singleton"、"prototype"、"request"、"session"、"application" 等)。
例如:1.事件监听: 使用 <listener> 元素,你可以配置事件监听器。
例如:1.条件注解: 使用 <condition> 和 <when> 元素,你可以根据特定条件配置或排除Beans。
例如:1.自定义标签: 你还可以使用自定义标签来扩展 beans.xml 的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Spring中xml的配置(摘抄)出自:1、value元素<value/>元素通过字符串来指定属性或构造器参数的值。
<bean id="myDataSource" detroy-method="close"class="mons.dbcp.BasicDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></proerpty><property name="url"><value>jdbc:mysql://localhost:3306/mydb</value></property><property name="username"><vlaue>root</value></property></bean>2、idref元素idref元素用来将容器内其它bean的id传给<constructor-arg/>或<property/>元素,同时提供错误难功能。
<bean id="theTargetBean" class="..."/><bean id="theClientBean" class="..."><property name="targetName"><idref bean="theTargetBean" /></property></bean>等同于:<bean id="theTargetBean" class="..." /><bean id="theClientBean" class="..."><property name="targetName"><value>theTargetBean</value></bean>使用idref标记允许容器在部署时验证所被引用的bean是否存在。
此外,如果被引用的bean在同一XML 文件内,且bean名字就是bean id,那么可以使用local属性。
此属性允许XML解析器在解析XML文件时来对引用的bean进行验证。
<property name="targetName"><idref local="theTargetBean" /></property>3、ref元素形式一:<ref bean="someBean">这是最常见的形式是通过使用ref标记指定bean属性的目标bean,通过该标签可以引用同一容器或父容器内的任何bean(无论是否在同一XML文件中)。
XML…bean‟元素的值即可以是指定的bean的id值也可以是其name值。
形式二:<ref local="someBean">使用ref的local属性指定目标bean,它可以利用XML解析器来难所引用的bean是否存在同一文件中。
local属性值必须是目标bean的id属性值。
形式三:<bean parent="someBean">通过使用ref的parent属性来引用当前窗口的父容器中的bean。
parent属性值即可以是目标bean的id 值,也可以是name属性值。
4、内部bean:所谓内部bean(inner bean)是指在一个bean的<property/>或<constructor-arg/>中使用< bean/>元素定义的bean.内部bean不需要有id或name属性,即使有也会被窗口忽略.内部bean总是匿名的且它们总是prototype模式的.同时将内部bean注入到包含该内部bean之外的bean 是不可能的.<bean id="outer" class="..."><property name="target"><bean class="com.mycoompany.Person"><property name="name" value="Fiona Apple"/><property name="age" value="25"/></bean></bean>5、集合合并:从Spring2.0开始,Spring IoC容器将支持集合的合并。
父子集合元素合并后的值就是子集合中的最终结果,而且子集合中的元素值将覆盖父集合中的对应的值。
<beans><bean id="parent" abstract="true" class="plexObject"><property name="adminEmails"><props><prop key="administrator">administrator@</prop><prop key="support">support@</prop></props></property></bean><bean id="child" parent="parent"><property name="adminEmails"><props merge="trur"><prop key="sales">sales@</prop><prop key="support">support@</prop></props></property></bean></beans>合并后内容:administrator=administrator@sales=sales@support=support@list集合有排序功能,父bean的列表内容将排在子bean列表内容的前面;merge属性必须在继承的子bean中定义。
6、Nulls<null/>用于处理null值。
Spring会把属性的空参数当作空字符串处理。
<bean class="ExampleBean"><property name="email"><value></value></property></bean>等同于excapleBean.setEamil("");而null值则可以使用<null/>元素来表示:<bean class="ExampleBean"><property name="email"><null/></property></bean>7、简写:针对常见的value值或bean的引用,Spring提供了简化格式用于替代<value/>和<ref/>元素。
<property/>、<constructor-arg/>、<entry/>元素都支持value属性,它可以用来替代内嵌的<value/>元素。
<property name="myProperty"><value>hello</value> ===== <property name="myProperty" value="helo" /></property><constructor-arg><value>hello</value> ===== <constructor-arg value="hello" /></construtctor-arg><entry key="myKey"><value>hello</value> ===== <entry key="myKey" value="hello" /></entry><property/>和<constructor-arg/>支持类似的简写属性ref,它可以替找整个内嵌的</ref>元素。
<property name="myProperty"><ref bean="myBean"> ===== <property name="myProperty" ref="myBean" /></property><constructor-arg><ref bean="myBean"> ===== <constructor-arg ref="myBean" /></constructor-arg>切记:尽管存在等同于<ref bean="xxx" >元素的简写形式,但并没有<ref local="xxx">的简写形式。