javascript
Spring 框架基础(01):核心组件总结,基础环境搭建
本文源碼:GitHub·點這里 || GitEE·點這里
一、Spring框架
1、框架簡介
Spring是一個開源框架,框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時為 J2EE 應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。簡單來說,Spring是一個分層的輕量級開源框架。
2、優點分析
1)、分層架構
一站式,每一個層都提供的解決方案
web層:struts,spring-MVC
service層:spring
dao層:hibernate,mybatis,jdbcTemplate,JPA
2)、輕量級
依賴資源少,銷毀的資源少。
3)、高內聚低耦合
Spring就是一個大容器,可以將所有對象創建和依賴關系統一維護,交給Spring管理。
4)、AOP編程的支持
Spring提供面向切面編程,可以方便的實現對程序進行權限攔截、運行監控等功能。
5)、事務的支持
只需要通過配置就可以完成對事務的管理,而無需手動編程
6)、集成測試
Spring對Junit4支持,可以通過注解方便的測試Spring程序。
7)、降低API的使用難度
Spring 對JavaEE開發中非常難用的一些API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些API應用難度大大降低
8)、集成各種框架
Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架的集成,如:Struts、Hibernate、MyBatis等。
二、核心組件分析
1、核心容器
容器是Spring框架的核心模式,該模塊包含Bean的創建、配置、管理等功能。
2、AOP編程
AOP 編程可以幫助應用程序解耦,使用AOP編程模式,可以把系統中的核心點從對象方法中解耦,統一管理。
3、數據訪問
該模塊集成了JDBC,解決JDBC開發模式導致的大量代碼冗余,集成常用的Dao層框架,hibernate,mybatis等,使開發環境的搭建更加便捷。
4、Web編程
Spring不僅集成各種流程的MVC框架,還自帶springmvc強大的框架,有助實現界面邏輯和應用程序分離,在Web層面實現應用的解耦。
三、環境搭建
項目結構圖:
1、Spring環境配置
- spring-context
Spring框架上下文環境容器配置。
<!--讀取外部配置文件--> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><!-- 允許JVM參數覆蓋 --><property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/><!--忽略沒有找到的配置參數--><property name="ignoreResourceNotFound" value="true"/><!--資源文件位置--><property name="locations"><list><value>classpath:jdbc.properties</value></list></property> </bean> <!-- 啟動組件掃描,排除@Controller組件,該組件由SpringMVC配置文件掃描 --> <context:component-scan base-package="com.spring.mvc"><context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 配置DRUID的連接池 --> <bean id="druidDataSource" abstract="true"><!-- 配置初始化,最小,最大 --><property name="initialSize" value="${jdbc.initialSize}"/><property name="minIdle" value="${jdbc.minIdle}" /><property name="maxActive" value="${jdbc.maxActive}" /><!-- 配置連接等待超時時間 --><property name="maxWait" value="${jdbc.maxWait}" /><!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /><!-- 配置一個連接在池中的最小生存時間,單位毫秒 --><property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /><property name="validationQuery" value="SELECT 'x'" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><!-- 打開PSCache,并且指定每個連接上PSCache的大小 --><property name="poolPreparedStatements" value="true" /><property name="maxPoolPreparedStatementPerConnectionSize" value="20" /><!-- 配置監控統計攔截的filters,去掉后監控界面SQL無法統計 --><property name="filters" value="stat" /> </bean> <!-- 設置數據源信息 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" parent="druidDataSource"><!-- 配置連接的基本信息 --><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /> </bean> <!--Spring整合mybatis--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!--讀取mybatis配置文件--><property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/><!-- 自動掃描mapper.xml映射文件 --><property name="mapperLocations" value="classpath:mybatis/mapper/**.xml"/><!--分頁助手插件--><property name="plugins"><array><bean class="com.github.pagehelper.PageHelper"><property name="properties"><value>dialect=mysql</value></property></bean></array></property> </bean> <!-- Mapper接口文件掃描 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.spring.mvc.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> <!--設置JDBC操作數據庫--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" lazy-init="false"><property name="dataSource" ref="dataSource"/> </bean> <!--設置mybatis操作數據庫--> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory"/> </bean> <!--方式一:spring事物管理器--> <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 關聯數據源 --><property name="dataSource" ref="dataSource"/> </bean> <!--開啟事務控制的注解支持--> <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/> <!--配置手動事物管理--> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"><property name="transactionManager" ref="dataSourceTransactionManager"/> </bean>- spring-mvc
Mvc開發環境容器配置。
<!--掃描文件--> <context:component-scan base-package="com.spring.mvc.controller" /> <!-- MVC默認的注解映射的方式 --> <mvc:annotation-driven /> <mvc:default-servlet-handler/> <!-- 視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/page/" /><property name="suffix" value=".jsp" /> </bean>2、jdbc參數配置
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring-mvc jdbc.username=root jdbc.password=123 jdbc.initialSize=10 jdbc.minIdle=10 jdbc.maxActive=120 jdbc.maxWait=60000 jdbc.timeBetweenEvictionRunsMillis=60000 jdbc.minEvictableIdleTimeMillis=3000003、mybatis配置
mybatis-config.xml文件
<configuration><settings><!--打印sql語句--><setting name="logImpl" value="STDOUT_LOGGING"/></settings> </configuration>4、web.xml配置
<display-name>frame_spring</display-name> <!--Spring相關配置--> <context-param><param-name>encoding</param-name><param-value>UTF-8</param-value> </context-param> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring*.xml</param-value> </context-param> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet><servlet-name>spring-mvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup> </servlet> <servlet-mapping><servlet-name>spring-mvc</servlet-name><url-pattern>/</url-pattern> </servlet-mapping> <!-- 編碼過濾器,以UTF8編碼 --> <filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param> </filter> <filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern> </filter-mapping>5、pom.xml配置
<build><finalName>${pom.artifactId}</finalName><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins> </build>四、源代碼地址
GitHub·地址 https://github.com/cicadasmile/spring-mvc-parent GitEE·地址 https://gitee.com/cicadasmile/spring-mvc-parent總結
以上是生活随笔為你收集整理的Spring 框架基础(01):核心组件总结,基础环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 添加MySql用户并授权
- 下一篇: OLAP引擎:基于Druid组件进行数据