關於利用註解,自動裝配搭建s2sm框架的整合
本人最近在根據專案優化升級框架,利用的是Sturts(2.5版本以後的)+Spring+mybatis,因為是用的2.5版本以後的Struts,所以感覺好坑的一說。浪費了2天多時間才整合好,現在把專案整合寫出來,一方面對自己以後可能會用的上,另一方面,如果有需要的,可以參考下
首先是利用maven搭建的web工程,先看下整體框架:
第一:先寫下SqlMapConfig.xml
在裡面配置如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 使用log4j作為日誌工具 --> <!-- <setting name="logImpl" value="LOG4J"/> --> <!-- 這個配置使全域性的對映器啟用或禁用快取 --> <setting name="cacheEnabled" value="true" /> <!-- 允許 JDBC 支援生成的鍵。需要適合的驅動。如果設定為 true 則這個設定強制生成的鍵被使用,儘管一些驅動拒絕相容但仍然有效(比如 Derby) --> <setting name="useGeneratedKeys" value="true" /> <!-- 配置預設的執行器。SIMPLE 執行器沒有什麼特別之處。REUSE 執行器重用預處理語句。BATCH 執行器重用語句和批量更新 --> <setting name="defaultExecutorType" value="REUSE" /> <!-- 全域性啟用或禁用延遲載入。當禁用時,所有關聯物件都會即時載入。 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 設定超時時間,它決定驅動等待一個數據庫響應的時間。 --> <setting name="defaultStatementTimeout" value="25000" /> </settings> <!-- 定義別名 --> <typeAliases> <!-- 單個別名定義 type:pojo的路徑 alias:別名的名稱 --> <!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> --> <!-- 批量別名定義 name:指定包名,將包下邊的所有pojo定義別名 ,別名為類名(首字母大寫或小寫都行) --> <package name="com.jmt"/> </typeAliases> <!-- 別名配置 --> <!-- <typeAliases> </typeAliases> --> <!-- 指定對映器路徑 --> <mappers> <mapper resource="com/jmt/mapper/system/ITokenDaoMapper.xml" /> </mappers> </configuration>
第二步:編寫spring的一系列xml
(1)編寫applicationContext-aop.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd" default-autowire="byName"
> <!-- 採用註釋的方式配置bean --> <context:annotation-config /> <context:component-scan base-package="com.jmt.*"></context:component-scan> <!-- 配置事務通知屬性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 定義事務傳播屬性 --> <tx:attributes> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="edit*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="new*" propagation="REQUIRED" /> <tx:method name="set*" propagation="REQUIRED" /> <tx:method name="remove*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="change*" propagation="REQUIRED" /> <tx:method name="check*" propagation="REQUIRED" /> <tx:method name="get*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" /> <tx:method name="load*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" propagation="REQUIRED" read-only="true" /> </tx:attributes> </tx:advice> <!-- 配置事務切面 --> <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* com.jmt.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" /> </aop:config> </beans>
(2)編寫applicationContext-dao.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" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<!-- 配置資料來源 -->
<!-- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:param.properties" /> </bean> -->
<!-- 1.配置資料庫相關引數properties的屬性:${url} -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- Oracle DataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName_oracle}" />
<property name="url" value="${jdbc.url_oracle}" />
<property name="username" value="${jdbc.username_oracle}" />
<property name="password" value="${jdbc.password_oracle}" />
<property name="maxActive" value="100" />
<property name="maxWait" value="1000" />
<property name="poolPreparedStatements" value="true" />
<property name="defaultAutoCommit" value="true" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="60" />
<property name="logAbandoned" value="true" />
<property name="testOnBorrow" value="true" />
</bean>
<!-- 啟用spring註解支援 -->
<context:annotation-config />
<!-- mybatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" /> </bean> -->
<!-- 配置SqlSessionTemplate -->
<!-- <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> -->
<!-- 4.配置掃描Dao介面包,動態實現Dao介面,注入到spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.jmt.dao"></property>
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
</beans>
(3)編寫applicationContext-service.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 掃描service包下所有使用註解的型別 -->
<context:component-scan base-package="com.jmt" />
</beans>
第三步:編寫Struts的配置檔案:sturts.xml,在這裡,需要建一個總的struts,然後還有子檔案
(1)總sturts配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd" >
<struts>
<!-- Some or all of these can be flipped to true for debugging -->
<!-- 請球引數的編碼格式 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.i18n.reload" value="false" />
<!-- 更改struts2請求Action的字尾名,預設為action。若想去掉字尾,設為","即可 -->
<constant name="struts.action.extension" value="," />
<!-- 是否使用struts的開發模式。開發模式會有更多的除錯資訊。預設值為false(生產環境下使用),開發階段最好開啟 -->
<constant name="struts.devMode" value="false" />
<!-- 指定預設編碼集,作用於HttpServletRequest的setCharacterEncoding()和 freemarker, vilocity的輸出 -->
<!-- 當struts.xml改動後,是否重新載入。預設值為false(生產環境下使用),開發階段最好開啟 -->
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<constant name="struts.serve.static" value="true" />
<!-- 設定瀏覽器是否快取靜態內容。預設值為true(生產環境下使用),開發階段最好關閉 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 指定由spring負責action物件的建立 -->
<constant name="struts.objectFactory" value="spring" />
<!-- 是否開啟動態方法呼叫 ,使用萬用字元的話就改為false-->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- struts零配置,不需要再allowed-methods新增 -->
<!-- <constant name="struts.convention.action.mapallmatches" value="true"/> -->
<constant name="struts.multipart.maxSize" value="200000000" />
<constant name="struts.multipart.saveDir" value=" /tmp/" />
<!-- 配置多個sturts.xml -->
<include file="struts/app/struts-app.xml" />
</struts>
(2)子sturts配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- app端老版本介面 -->
<package name="app" extends="struts-default" namespace="/app">
<!-- 因為struts2升級2.5版本後不允許使用萬用字元,所以如果要使用萬用字元,需要下面的允許全域性零配置 -->
<!-- 允許全域性零配置 -->
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="user_*" class="com.jmt.webapp.appaction.user.PhoneUserAction" method="{1}" />
</package>
</struts>
第四步:配置SqlMapConfig.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 使用log4j作為日誌工具 -->
<!-- <setting name="logImpl" value="LOG4J"/> -->
<!-- 這個配置使全域性的對映器啟用或禁用快取 -->
<setting name="cacheEnabled" value="true" />
<!-- 允許 JDBC 支援生成的鍵。需要適合的驅動。如果設定為 true 則這個設定強制生成的鍵被使用,儘管一些驅動拒絕相容但仍然有效(比如
Derby) -->
<setting name="useGeneratedKeys" value="true" />
<!-- 配置預設的執行器。SIMPLE 執行器沒有什麼特別之處。REUSE 執行器重用預處理語句。BATCH 執行器重用語句和批量更新 -->
<setting name="defaultExecutorType" value="REUSE" />
<!-- 全域性啟用或禁用延遲載入。當禁用時,所有關聯物件都會即時載入。 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 設定超時時間,它決定驅動等待一個數據庫響應的時間。 -->
<setting name="defaultStatementTimeout" value="25000" />
</settings>
<!-- 定義別名 -->
<!-- 別名配置 -->
<typeAliases>
<package name="com.jmt.model"/>
</typeAliases>
<!-- 別名配置 -->
<!-- 指定對映器路徑 -->
<mappers>
<mapper resource="com/jmt/mapper/system/ITokenDaoMapper.xml" />
<mapper resource="com/jmt/mapper/PhoneUser/UserDaoMapper.xml"/>
</mappers>
</configuration>
第五步:配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_1489400682112">
<!-- 整合spring,配置spring的監聽器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 引數配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/applicationContext-*.xml
</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<!-- struts2過濾器配置 -->
<!--整合struts2 即struts2的過濾器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<!-- 配置action的action包 -->
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.jmt.webapp.appaction</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<!-- -->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<!-- -->
</filter-mapping>
<!-- 過濾器配置 -->
<!-- param.properties的配置過濾器 -->
<listener>
<listener-class>com.jmt.webapp.listener.ParamLoadListener</listener-class>
</listener>
<!-- 字符集過濾 -->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--首頁 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
第六步:配置pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jmt</groupId>
<artifactId>jmtManager</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>jmtManager Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<webVersion>3.0</webVersion>
<!-- spring版本號 -->
<spring.version>4.0.2.RELEASE</spring.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- spring核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<!-- <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId>
<version>1.2.17</version> </dependency> -->
<!-- org.apache.ttpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<!-- 匯入dbcp的jar包,用來在applicationContext.xml中配置資料庫 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.10</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
<!-- commons-lang -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<!-- oracle -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<!-- base64 -->
<dependency>
<groupId>org.gnu</groupId>
<artifactId>gnu-crypto</artifactId>
<version>2.0.1</version>
</dependency>
<!-- syslog4j -->
<dependency>
<groupId>org.syslog4j</groupId>
<artifactId>syslog4j</artifactId>
<version>0.9.30</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 日誌檔案管理包 -->
<!-- log start -->
<!-- <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId>
<version>${log4j.version}</version> </dependency> -->
<!-- ehcache -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.3</version>
</dependency>
<dependency>
<groupId>com.alisoft.asf.cache</groupId>
<artifactId>alisoft-xplatform-asf-cache</artifactId>
<version>2.5.1</version>
</dependency>
<!-- struts2-core -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.8</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.5.10</version>
</dependency>
<!-- 支援Struts2的註解 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.5.8</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>bean-validator</artifactId>
<version>3.0-JBoss-4.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.enterprise.deploy</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.jms</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.management.j2ee</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.resource</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.security.auth.message</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.security.jacc</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet.jsp</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- fastJson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api-osgi</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api-osgi</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-osgi-bundle</artifactId>
<version>1.0.1-SP3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.1</version>
</dependency>
<!-- mybatis-plus -->
<!-- <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId>
<version>1.5</version> </dependency> -->
<!-- struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.8</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
到這裡,配置就完成了,下面讓我們到程式碼中看看吧
第一:action中需要新增@Action
@Action
public class VehicleAction extends BaseAction { }
第二:action中所用到的service需要裝配,且需要set,get方法,不然會報找不到哦!
@Autowired
public BmfwSxtxxService bmfwSxtxxService;
public BmfwSxtxxService getBmfwSxtxxService() {
return bmfwSxtxxService;
}
public void setBmfwSxtxxService(BmfwSxtxxService bmfwSxtxxService) {
this.bmfwSxtxxService = bmfwSxtxxService;
}
第三:其service的實現類的頭部也要加@Service(),且要指定service哦~!
@Service("bmfwSxtxxService")
public class BmfwSxtxxServiceImpl extends BaseServiceImpl implements
BmfwSxtxxService {}
第四:在service實現層裡的dao也需要自動裝配:
@Autowired
public BmfwSxtxxDao bmfwSxtxxDao;
@Autowired
public SxtjtDao sxtjtDao;
值得注意的是:這裡不用再新增get,set方法了!!!
好了,講解完畢,下面開始 你的專案之路吧
相關推薦
關於利用註解,自動裝配搭建s2sm框架的整合
本人最近在根據專案優化升級框架,利用的是Sturts(2.5版本以後的)+Spring+mybatis,因為是用的2.5版本以後的Struts,所以感覺好坑的一說。浪費了2天多時間才整合好,現在把專案整合寫出來,一方面對自己以後可能會用的上,另一方面,如果有需要的,可以參考
Spring依賴注入,自動掃描元件,自動裝配,註解注入
Spring 依賴注入 Spring框架中,依賴注入(DI)的設計模式是用來定義物件彼此間的依賴。它主要有兩種型別: Setter方法注入 構造器注入 <!-- 建立一個 Spring bean 的配置檔案,並在這裡宣告所有的Java物件的依賴。 --
利用反射打造自定義註解,自動校驗或處理資料
開發過程中,難免會對資料進行校驗或處理,難道每次都對不同的實體類的屬性挨個判斷是否符合規範或者對其進行特殊處理,程式設計師不應該這麼做。在這個時候,自定義註解就派上大用場了。比如自定義一個 @Email 註解,將其標註在只能存放email格式的屬性(private
Spring筆記03(創建對象,DI設值註入,自動裝配(autowire))
實現 des sleep XML auto 初始 system 驗證 方法 1.創建對象的三種方式: 01.Animal接口代碼: package cn.pb.dao; /** * 動物接口 */ public interface Animal { //吃飯
[email protected]註解與自動裝配(轉發)
配置 調用方法 support autowired 信息 ann over 反射機制 test 1 配置文件的方法我們編寫spring 框架的代碼時候。一直遵循是這樣一個規則:所有在spring中註入的bean 都建議定義成私有的域變量。並且要配套寫上 get 和 se
Spring@Autowired註解與自動裝配
arp details auto 反射機制 java -i etc str spi 1 配置文件的方法 我們編寫spring 框架的代碼時候。一直遵循是這樣一個規則:所有在spring中註入的bean 都建議定義成私有的域變量。並且要配套寫上 get 和 set方法
spring學習筆記(13)——註解Autowired自動裝配
使用Autowired 一般情況下,controller和service是有關聯關係的,service和DAO層是有關聯關係的,我們使用autowired註解,在controller中裝配servi
[email protected]註解與自動裝配
1 配置檔案的方法 我們編寫spring 框架的程式碼時候。一直遵循是這樣一個規則:所有在spring中注入的bean 都建議定義成私有的域變數。並且要配套寫上 get 和 set方法。 Boss 擁有 Office 和 Car
[email protected]註解與自動裝配
1 配置檔案的方法 我們編寫spring 框架的程式碼時候。一直遵循是這樣一個規則:所有在spring中注入的bean 都建議定義成私有的域變數。並且要配套寫上 get 和 set方法。 Boss 擁有 Office 和 Car 型別的兩個屬性:
spring註解之自動裝配和屬性賦值
${} throws 定義類 on() wired 成對 功能 inter setter 1.自動裝配 1.1什麽是自動裝配? Spring利用依賴註入(DI),完成對IOC容器中各個組件的依賴關系賦值; [email protected]/@Quali
springboot自動裝配(1)---@SpringBootApplication註解怎麼自動裝配各種元件
1.對於springboot個人認為它就是整合了各種元件,然後提供對應的自動裝配和啟動器(starter) 2.@SpringBootApplication註解其實就是組合註解,通過它找到自動裝配的註解@EnableAutoConfiguration,再由@EnableAu
IDEA使用maven搭建SSM框架整合專案(超級詳細,值得一看)
[TOC](IDEA使用maven搭建SSM框架整合專案(超級詳細,值得一看)) ## **溫馨提示** ***此篇文章篇幅較長,相信我看了這篇文章你一定會擼起碼來行雲流水,事半功倍,無懈可擊,請耐心閱讀。
redis入門+基於Ruby的redis叢集搭建+spring框架整合
定義 redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。這些資料型別都支援p
模仿spring-aop的功能,利用註解搭建自己的框架。
屬性 def name rac java8 out fault 一個 lte 入JAVA坑7月有余,也嘗試自己手動搭建框架,最近對spring aop的這種切面很著迷,為此記錄下自己目前搭出來的小小的demo,後續有時間也會繼續改進自己的demo。望大神們不吝賜教。 主
在IDEA中搭建SSM框架,利用maven對jar包進行依賴管理
本教程作為一個學習的記錄過程,讓大家快速學會在IDEA中利用maven搭建一個SSM框架。1.準備工作首先開啟IDEA建立一個maven專案,如下所示。點選下一步點選下一步最後一步專案建立好了之後的結構是這樣的:開啟這個專案的pom.xml檔案,刪除<b
Spring自動注入,利用註解實現spring基本配置詳解,Spring註解快速入門
Spring註解 1.準備工作 (1)匯入common-annotations.jar (2)匯入schema檔案 檔名為spring-context-3.0.3.RELEASE.jar (3)在xml的beans節點中配置 2.xml配置工作 <?xml
如何利用tox打造自動自動化測試框架,看完就懂
什麼是toxtox官方文件的第一句話 standardize testing in Python,意思就是說標準化python中的測試,那是不是很適合測試人員來使用呢,我們來看看他究竟是什麼? 根據官方文件的解釋,tox是一個管理測試虛擬環境的命令列工具,可以支援穿件隔離的python環境,在裡面可以安裝不同
【Spring註解驅動開發】使用@Autowired@Qualifier@Primary三大註解自動裝配元件,你會了嗎?
## 寫在前面 > 【Spring專題】停更一個多月,期間在更新其他專題的內容,不少小夥伴紛紛留言說:冰河,你【Spring專題】是不是停更了啊!其實並沒有停更,只是中途有很多小夥伴留言說急需學習一些知識技能,以便於跳槽,哈哈,大家都懂得!所以,中途停更了一段時間,寫了一些其他專題的文章。現在,繼續更
利用vultr搭建自己的服務器,附帶ss搭建哦!!!
設置 rtu 網絡數 瀏覽器 命令 運行 12個 信用 sof 眾所周知,我國因為某些原因查閱瀏覽不到一些國外的資料及內容,這給我們的學習工作帶來了很大的不便。所以怎樣才能跨越這個障礙呢?這就需要VPS(Virtual Private Server 虛擬專用服務器)的幫
基於java容器註解---基於泛型的自動裝配
ges ger 配置 技術分享 config -1 blog clas bean 上面利用@Configuration和@Bean配置bean,中間利用@Autowired,指定s1和s2分別指向哪個實現類,下面利用@Autowired,指定s中只有Integer實現類