总结



基于sts+maven框架的配置信息

 

 

Web.xml文件中是监听器以及处理中文乱码

 

mavenrun as时配置的的是:tomcatrun

 

WEB-INF目录下的的spring目录下appServlet下得配置文件是:springMVC-context.xml

springMVC-context.xml文件中的配置信息:

<!-- 开启注解驱动 -->

<annotation-driven />

 

<!-- spring静态资源处理器 -->

<resources mapping="/css/**" location="/resources/css/"

cache-period="31556926" />

<resources mapping="/js/**" location="/resources/js/"

cache-period="31556926" />

<resources mapping="/img/**" location="/resources/img/"

cache-period="31556926" />

 

<!-- 视图解释器 -->

<beans:bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="viewClass"

value="org.springframework.web.servlet.view.JstlView" />

<beans:property name="prefix" value="/WEB-INF/views/" />

<beans:property name="suffix" value=".jsp" />

</beans:bean>

<!-- 文件上传 -->

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

  

<context:component-scan base-package="com.ixilai.back.controller" />

 

第一个配置文件,在web.xml文件中配置文件过滤器,

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5">

<session-config>

<session-timeout>0</session-timeout>

</session-config>

<!--文件过滤器  -->

<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>

<filter>

<description>后台模块请求参数记录</description>

<filter-name>RequestParameterFilter</filter-name>

<filter-class>com.ixilai.filter.LoginFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>RequestParameterFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!--前端控制器,dispatchServlet  -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/applicationContext.xml</param-value>

</context-param>

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/appServlet/springMVC-context.xml</param-value>

</init-param>

<load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>appServlet</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>/WEB-INF/login.jsp</welcome-file>

</welcome-file-list>

</web-app>

 

 

 

 

第二个配置文件在applicationContext.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:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"

xmlns:jee="http://www.springframework.org/schema/jee" xmlns:p="http://www.springframework.org/schema/p"

xmlns:task="http://www.springframework.org/schema/task"

xsi:schemaLocation="

          http://www.springframework.org/schema/jee

          http://www.springframework.org/schema/jee/spring-jee-3.0.xsd

          http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

          http://www.springframework.org/schema/tx

          http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

          http://www.springframework.org/schema/context

          http://www.springframework.org/schema/context/spring-context-3.0.xsd

          http://www.springframework.org/schema/aop

          http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

          http://www.springframework.org/schema/task   

       http://www.springframework.org/schema/task/spring-task-3.0.xsd"

default-autowire="byName">

 

<!-- Root Context: defines shared resources visible to all other web components -->

<!-- 启用Spring 容器的类扫描机制以启用注释驱动 Bean 定义和注释驱动 Bean 自动注入的策略 -->

<!-- 扫描com.lmcs包下组件 -->

<context:component-scan base-package="com.ixilai">

<!-- 排除com.lmcs.domian.*包中所有组件 -->

<context:exclude-filter type="regex"

expression="com.ixilai.back.entity.*" />

</context:component-scan>

 

<aop:aspectj-autoproxy />

 

<!-- 加载jdbc.properties配置文件 -->

<context:property-placeholder location="classpath:jdbc.properties"

ignore-unresolvable="true" />

<!-- 以下配置dbcp数据源 -->

<bean id="dataSource" destroy-method="close"

class="org.apache.commons.dbcp.BasicDataSource">

<!-- Connection Info -->

<property name="driverClassName" value="${jdbc.driver}" />

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<!-- Connection Pooling Info -->

<property name="maxActive" value="20" />

<property name="initialSize" value="1" />

<property name="maxWait" value="60000" />

<property name="minIdle" value="1" />

<property name="validationQuery" value="${jdbc.timeout.sql}"></property>

</bean>

 

<!-- springJdbc模板 -->

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

<property name="dataSource">

<ref bean="dataSource" />

</property>

</bean>

<!-- hibernate模板 -->

<bean id="HibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

 

<!-- 使用hibernate注释 时,采用以下配置 -->

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<!-- 扫描注释配置 -->

<!-- packagesToScan配置有个bug,必须配置到domain的上一层,否则扫描不到实体类 -->

<property name="packagesToScan">

<list>

<value>com.ixilai.back.*</value>

</list>

</property>

<!-- 扫描xml配置 -->

<property name="mappingDirectoryLocations">

<list>

<value>classpath*:com/lmcs/core/domain</value>

</list>

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">${hibernate.dialect}</prop>

<!-- <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> -->

<!-- <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> -->

<prop key="hibernate.max_fetch_depth">3</prop>

</props>

</property>

</bean>

<!-- 定时任务 -->

<bean id="mySQLQuartzTask" class="com.ixilai.job.MySQLQuartzTask" />

<bean id="myPackageTask" class="com.ixilai.job.MyPackageTask"></bean>

<!-- 定时任务执行策略 -->

<task:scheduled-tasks>

<!-- 防止mysql链接关闭的任务 延迟2分钟  每7小时执行一次 -->

<task:scheduled ref="mySQLQuartzTask" method="execute" cron="0 2 */7 * * ?" />

<!-- 每天定时10开始每隔2小时触发一次进行集包发送至i带货 -->

<task:scheduled ref="myPackageTask" method="execute" cron="0 0 10/2 * * ?"/>

</task:scheduled-tasks>

 

<!-- 开启AOP监听 只对当前配置文件有效 -->

<aop:aspectj-autoproxy expose-proxy="true"/>

<!-- 开启注解事务 只对当前配置文件有效 -->

<tx:annotation-driven proxy-target-class="true" transaction-manager="txManager"/>

<!-- 事务管理 -->

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

<property name="dataSource" ref="dataSource"/>

</bean>

<tx:advice id="txAdvice" transaction-manager="txManager">

<tx:attributes>

<tx:method name="save*" propagation="REQUIRED"/>

<tx:method name="add*" propagation="REQUIRED"/>

<tx:method name="create*" propagation="REQUIRED"/>

<tx:method name="insert*" propagation="REQUIRED"/>

<tx:method name="update*" propagation="REQUIRED"/>

<tx:method name="merge*" propagation="REQUIRED"/>

<tx:method name="del*" propagation="REQUIRED"/>

<tx:method name="remove*" propagation="REQUIRED"/>

<tx:method name="put*" propagation="REQUIRED"/>

<tx:method name="use*" propagation="REQUIRED"/>

<tx:method name="query*" propagation="REQUIRED"/>

<tx:method name="get*" propagation="REQUIRED"/>

<tx:method name="find*" propagation="REQUIRED"/>

<tx:method name="list*" propagation="REQUIRED"/>

<tx:method name="*" propagation="REQUIRED"/>

</tx:attributes>

</tx:advice>

<aop:config expose-proxy="true">

<!-- 只对业务逻辑层实施事务 -->

<aop:pointcut id="txPointcut" expression="execution(* com.ixilai.service.impl.*.*(..))"/>

<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/></aop:config>

</beans>

 

 

 

第三个配置文件在springMVC-context.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

 

<!-- DispatcherServlet Context: defines this servlet's request-processing

infrastructure -->

 

<!-- 开启注解驱动 -->

<annotation-driven />

 

<!-- spring静态资源处理器 -->

<resources mapping="/css/**" location="/resources/css/"

cache-period="31556926" />

<resources mapping="/js/**" location="/resources/js/"

cache-period="31556926" />

<resources mapping="/img/**" location="/resources/img/"

cache-period="31556926" />

 

<!-- 视图解释器 -->

<beans:bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="viewClass"

value="org.springframework.web.servlet.view.JstlView" />

<beans:property name="prefix" value="/WEB-INF/views/" />

<beans:property name="suffix" value=".jsp" />

</beans:bean>

<!-- 文件上传 -->

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

  

<context:component-scan base-package="com.ixilai.back.controller" />

</beans:beans>

 

 

 

 

Web文件中的监听器和文件过滤器需要自己配置,并且将SpringMVC-context.xml的加载设置成<load-on-startup>2</load-on-startup>

然后是applicationContext.xml文件的配置,这个文件根据需求基本上自己配置

添加这些命名空间

xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"

xmlns:jee="http://www.springframework.org/schema/jee" xmlns:p="http://www.springframework.org/schema/p"

xmlns:task="http://www.springframework.org/schema/task"

xsi:schemaLocation="

          http://www.springframework.org/schema/jee

          http://www.springframework.org/schema/jee/spring-jee-3.0.xsd

          http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

          http://www.springframework.org/schema/tx

          http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

          http://www.springframework.org/schema/context

          http://www.springframework.org/schema/context/spring-context-3.0.xsd

          http://www.springframework.org/schema/aop

          http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

          http://www.springframework.org/schema/task   

       http://www.springframework.org/schema/task/spring-task-3.0.xsd"

default-autowire="byName">

<!-- 加载jdbc.properties配置文件 -->

<context:property-placeholder location="classpath:jdbc.properties"

ignore-unresolvable="true" />黄色标出的颜色是表明可以配置多个jdbc.properties文件,如果不配置的话,就会出现

 

如果想要配置多个properties文件

 

<context:property-placeholder location="classpath:jdbc.properties"/>

 

<context:property-placeholder location="classpath:jdbc.properties"/>

 

这种方式是不被允许的,一定会出"Could not resolve placeholder"

 

 

 

解决方案:

 

(1) Spring 3.0中,可以写:

 

<context:property-placeholder location="xxx.properties" ignore-unresolvable="true"/>

 

<context:property-placeholder location="xxx.properties" ignore-unresolvable="true"/>

 

配置hibernate属性

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">${hibernate.dialect}</prop>数据库方言

<!-- <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> -->

<!-- <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> -->

其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。

其实这个 <prop key="hibernate.max_fetch_depth">3</prop><!-- 设置外连接抓取树的最大深度

取值. 建议设置为03之间 -->

</props>

</property>

 

pom.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <modelVersion>4.0.0</modelVersion>

  <groupId>ixilai-site-manage</groupId>

  <artifactId>ixilai-site-manage</artifactId>

  <version>1.0.0-BUILD-SNAPSHOT</version>

  <packaging>war</packaging>

  <name>ixilai-site-manage</name>

  <properties>

    <org.aspectj-version>1.6.10</org.aspectj-version>

    <java-version>1.7</java-version>

    <org.springframework-version>3.1.2.RELEASE</org.springframework-version>

    <org.slf4j-version>1.6.6</org.slf4j-version>

  </properties>

  <dependencies>

    <dependency>

      <groupId>jstl</groupId>

      <artifactId>jstl</artifactId>

      <version>1.2</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>joda-time</groupId>

      <artifactId>joda-time</artifactId>

      <version>2.4</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>basic-framework</groupId>

      <artifactId>basic-framework</artifactId>

      <version>1.0.1-RELEASE</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-webmvc</artifactId>

      <version>3.1.2.RELEASE</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>commons-dbcp</groupId>

      <artifactId>commons-dbcp</artifactId>

      <version>1.4</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>mysql</groupId>

      <artifactId>mysql-connector-java</artifactId>

      <version>5.0.5</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.quartz-scheduler</groupId>

      <artifactId>quartz</artifactId>

      <version>2.0.2</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.codehaus.jackson</groupId>

      <artifactId>jackson-core-asl</artifactId>

      <version>1.9.2</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.codehaus.jackson</groupId>

      <artifactId>jackson-mapper-asl</artifactId>

      <version>1.9.2</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-context</artifactId>

      <version>3.1.2.RELEASE</version>

      <scope>compile</scope>

      <exclusions>

        <exclusion>

          <artifactId>commons-logging</artifactId>

          <groupId>commons-logging</groupId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>org.aspectj</groupId>

      <artifactId>aspectjrt</artifactId>

      <version>1.6.10</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi-ooxml</artifactId>

      <version>3.10-FINAL</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.slf4j</groupId>

      <artifactId>slf4j-api</artifactId>

      <version>1.6.6</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>org.slf4j</groupId>

      <artifactId>jcl-over-slf4j</artifactId>

      <version>1.6.6</version>

      <scope>runtime</scope>

    </dependency>

    <dependency>

      <groupId>org.slf4j</groupId>

      <artifactId>slf4j-log4j12</artifactId>

      <version>1.6.6</version>

      <scope>runtime</scope>

    </dependency>

    <dependency>

      <groupId>log4j</groupId>

      <artifactId>log4j</artifactId>

      <version>1.2.15</version>

      <scope>runtime</scope>

      <exclusions>

        <exclusion>

          <artifactId>mail</artifactId>

          <groupId>javax.mail</groupId>

        </exclusion>

        <exclusion>

          <artifactId>jms</artifactId>

          <groupId>javax.jms</groupId>

        </exclusion>

        <exclusion>

          <artifactId>jmxtools</artifactId>

          <groupId>com.sun.jdmk</groupId>

        </exclusion>

        <exclusion>

          <artifactId>jmxri</artifactId>

          <groupId>com.sun.jmx</groupId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>javax.inject</groupId>

      <artifactId>javax.inject</artifactId>

      <version>1</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>servlet-api</artifactId>

      <version>2.5</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>javax.servlet.jsp</groupId>

      <artifactId>jsp-api</artifactId>

      <version>2.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>jstl</artifactId>

      <version>1.2</version>

      <scope>compile</scope>

    </dependency>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.7</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

  <repositories>

    <repository>

      <releases>

        <enabled>true</enabled>

      </releases>

      <snapshots>

        <enabled>true</enabled>

      </snapshots>

      <id>zhyl-nexusRepo</id>

      <name>zhyl-nexusRepo</name>

      <url>http://192.168.0.199:8081/nexus/content/groups/public/</url>

    </repository>

    <repository>

      <snapshots>

        <enabled>false</enabled>

      </snapshots>

      <id>central</id>

      <name>Central Repository</name>

      <url>http://repo.maven.apache.org/maven2</url>

    </repository>

  </repositories>

  <pluginRepositories>

    <pluginRepository>

      <releases>

        <updatePolicy>never</updatePolicy>

      </releases>

      <snapshots>

        <enabled>false</enabled>

      </snapshots>

      <id>central</id>

      <name>Central Repository</name>

      <url>http://repo.maven.apache.org/maven2</url>

    </pluginRepository>

  </pluginRepositories>

  <build>

    <sourceDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\src\main\java</sourceDirectory>

    <scriptSourceDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\src\main\scripts</scriptSourceDirectory>

    <testSourceDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\src\test\java</testSourceDirectory>

    <outputDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\target\classes</outputDirectory>

    <testOutputDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\target\test-classes</testOutputDirectory>

    <resources>

      <resource>

        <directory>C:\Users\qxqspace\Desktop\ixilai-site-manage\src\main\resources</directory>

      </resource>

    </resources>

    <testResources>

      <testResource>

        <directory>C:\Users\qxqspace\Desktop\ixilai-site-manage\src\test\resources</directory>

      </testResource>

    </testResources>

    <directory>C:\Users\qxqspace\Desktop\ixilai-site-manage\target</directory>

    <finalName>ixilai-site-manage-1.0.0-BUILD-SNAPSHOT</finalName>

    <pluginManagement>

      <plugins>

        <plugin>

          <artifactId>maven-antrun-plugin</artifactId>

          <version>1.3</version>

        </plugin>

        <plugin>

          <artifactId>maven-assembly-plugin</artifactId>

          <version>2.2-beta-5</version>

        </plugin>

        <plugin>

          <artifactId>maven-dependency-plugin</artifactId>

          <version>2.8</version>

        </plugin>

        <plugin>

          <artifactId>maven-release-plugin</artifactId>

          <version>2.3.2</version>

        </plugin>

      </plugins>

    </pluginManagement>

    <plugins>

      <plugin>

        <artifactId>maven-eclipse-plugin</artifactId>

        <version>2.9</version>

        <configuration>

          <additionalProjectnatures>

            <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>

          </additionalProjectnatures>

          <additionalBuildcommands>

            <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>

          </additionalBuildcommands>

          <downloadSources>true</downloadSources>

          <downloadJavadocs>true</downloadJavadocs>

        </configuration>

      </plugin>

      <plugin>

        <artifactId>maven-compiler-plugin</artifactId>

        <version>2.5.1</version>

        <executions>

          <execution>

            <id>default-testCompile</id>

            <phase>test-compile</phase>

            <goals>

              <goal>testCompile</goal>

            </goals>

            <configuration>

              <source>1.7</source>

              <target>1.7</target>

              <compilerArgument>-Xlint:all</compilerArgument>

              <showWarnings>true</showWarnings>

              <showDeprecation>true</showDeprecation>

            </configuration>

          </execution>

          <execution>

            <id>default-compile</id>

            <phase>compile</phase>

            <goals>

              <goal>compile</goal>

            </goals>

            <configuration>

              <source>1.7</source>

              <target>1.7</target>

              <compilerArgument>-Xlint:all</compilerArgument>

              <showWarnings>true</showWarnings>

              <showDeprecation>true</showDeprecation>

            </configuration>

          </execution>

        </executions>

        <configuration>

          <source>1.7</source>

          <target>1.7</target>

          <compilerArgument>-Xlint:all</compilerArgument>

          <showWarnings>true</showWarnings>

          <showDeprecation>true</showDeprecation>

        </configuration>

      </plugin>

      <plugin>

        <groupId>org.codehaus.mojo</groupId>

        <artifactId>exec-maven-plugin</artifactId>

        <version>1.2.1</version>

        <configuration>

          <mainClass>org.test.int1.Main</mainClass>

        </configuration>

      </plugin>

      <plugin>

        <artifactId>maven-clean-plugin</artifactId>

        <version>2.5</version>

        <executions>

          <execution>

            <id>default-clean</id>

            <phase>clean</phase>

            <goals>

              <goal>clean</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

      <plugin>

        <artifactId>maven-install-plugin</artifactId>

        <version>2.4</version>

        <executions>

          <execution>

            <id>default-install</id>

            <phase>install</phase>

            <goals>

              <goal>install</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

      <plugin>

        <artifactId>maven-resources-plugin</artifactId>

        <version>2.6</version>

        <executions>

          <execution>

            <id>default-resources</id>

            <phase>process-resources</phase>

            <goals>

              <goal>resources</goal>

            </goals>

          </execution>

          <execution>

            <id>default-testResources</id>

            <phase>process-test-resources</phase>

            <goals>

              <goal>testResources</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

      <plugin>

        <artifactId>maven-surefire-plugin</artifactId>

        <version>2.12.4</version>

        <executions>

          <execution>

            <id>default-test</id>

            <phase>test</phase>

            <goals>

              <goal>test</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

      <plugin>

        <artifactId>maven-war-plugin</artifactId>

        <version>2.2</version>

        <executions>

          <execution>

            <id>default-war</id>

            <phase>package</phase>

            <goals>

              <goal>war</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

      <plugin>

        <artifactId>maven-deploy-plugin</artifactId>

        <version>2.7</version>

        <executions>

          <execution>

            <id>default-deploy</id>

            <phase>deploy</phase>

            <goals>

              <goal>deploy</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

      <plugin>

        <artifactId>maven-site-plugin</artifactId>

        <version>3.3</version>

        <executions>

          <execution>

            <id>default-site</id>

            <phase>site</phase>

            <goals>

              <goal>site</goal>

            </goals>

            <configuration>

              <outputDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\target\site</outputDirectory>

              <reportPlugins>

                <reportPlugin>

                  <groupId>org.apache.maven.plugins</groupId>

                  <artifactId>maven-project-info-reports-plugin</artifactId>

                </reportPlugin>

              </reportPlugins>

            </configuration>

          </execution>

          <execution>

            <id>default-deploy</id>

            <phase>site-deploy</phase>

            <goals>

              <goal>deploy</goal>

            </goals>

            <configuration>

              <outputDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\target\site</outputDirectory>

              <reportPlugins>

                <reportPlugin>

                  <groupId>org.apache.maven.plugins</groupId>

                  <artifactId>maven-project-info-reports-plugin</artifactId>

                </reportPlugin>

              </reportPlugins>

            </configuration>

          </execution>

        </executions>

        <configuration>

          <outputDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\target\site</outputDirectory>

          <reportPlugins>

            <reportPlugin>

              <groupId>org.apache.maven.plugins</groupId>

              <artifactId>maven-project-info-reports-plugin</artifactId>

            </reportPlugin>

          </reportPlugins>

        </configuration>

      </plugin>

    </plugins>

  </build>

  <reporting>

    <outputDirectory>C:\Users\qxqspace\Desktop\ixilai-site-manage\target\site</outputDirectory>

  </reporting>

</project>

 

 

 

 

@Repository@Service@Controller @Component 将类标识为Bean

@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类路径中的类并识别出 @Repository 注解,需要在 XML 配置文件中启用Bean 的自动扫描功能,这可以通过<context:component-scan/>实现。如下所示:

 // 首先使用 @Repository 将 DAO 类声明为 Bean

 package bookstore.dao;

 @Repository

 public class UserDaoImpl implements UserDao{ …… }

 

 // 其次,在 XML 配置文件中启动 Spring 的自动扫描功能

 <beans … >

    ……

 <context:component-scan base-package=”bookstore.dao” />

……

 </beans>如此,我们就不再需要在 XML 中显式使用 <bean/> 进行Bean 的配置。Spring 在容器初始化时将自动扫描 base-package 指定的包及其子包下的所有 class文件,所有标注了 @Repository 的类都将被注册为 Spring Bean

 

博客园

@repository注解 

Posted on 2015-01-16 13:42 ╰★张志峰★╮ 阅读(10859) 评论(0) 编辑 收藏 

Spring的注解形式:@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。

@Repository@Service@Controller @Component 将类标识为Bean

Spring 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类路径中的类并识别出 @Repository 注解,需要在 XML 配置文件中启用Bean 的自动扫描功能,这可以通过<context:component-scan/>实现。如下所示:

 // 首先使用 @Repository 将 DAO 类声明为 Bean

 package bookstore.dao;

 @Repository

 public class UserDaoImpl implements UserDao{ …… }

 

 // 其次,在 XML 配置文件中启动 Spring 的自动扫描功能

 <beans … >

    ……

 <context:component-scan base-package=”bookstore.dao” />

……

 </beans>

如此,我们就不再需要在 XML 中显式使用 <bean/> 进行Bean 的配置。Spring 在容器初始化时将自动扫描 base-package 指定的包及其子包下的所有 class文件,所有标注了 @Repository 的类都将被注册为 Spring Bean

为什么 @Repository 只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。

Spring 2.5 @Repository的基础上增加了功能类似的额外三个注解:@Component@Service@Constroller,它们分别用于软件系统的不同层次:

· @Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。

· @Service 通常作用在业务层,但是目前该功能与 @Component 相同。

· @Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。

通过在类上使用 @Repository@Component@Service @Constroller 注解,Spring会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与 @Repository 是完全相同的。

另外,除了上面的四个注解外,用户可以创建自定义的注解,然后在注解上标注 @Component,那么,该自定义注解便具有了与所@Component 相同的功能。不过这个功能并不常用。

当一个 Bean 被自动检测到时,会根据那个扫描器的 BeanNameGenerator 策略生成它的 bean名称。默认情况下,对于包含 name 属性的 @Component@Repository@Service @Controller,会把 name 取值作为 Bean 的名字。如果这个注解不包含 name值或是其他被自定义过滤器发现的组件,默认 Bean 名称会是小写开头的非限定类名。如果你不想使用默认 bean命名策略,可以提供一个自定义的命名策略。首先实现 BeanNameGenerator接口,确认包含了一个默认的无参数构造方法。然后在配置扫描器时提供一个全限定类名,如下所示:

 <beans ...>

 <context:component-scan

    base-package="a.b" name-generator="a.SimpleNameGenerator"/>

 </beans>

与通过 XML 配置的 Spring Bean 一样,通过上述注解标识的Bean,其默认作用域是"singleton",为了配合这四个注解,在标注 Bean 的同时能够指定 Bean 的作用域,Spring2.5 引入了 @Scope 注解。使用该注解时只需提供作用域的名称就行了,如下所示:

 @Scope("prototype")

 @Repository

 public class Demo { … }

如果你想提供一个自定义的作用域解析策略而不使用基于注解的方法,只需实现 ScopeMetadataResolver接口,确认包含一个默认的没有参数的构造方法。然后在配置扫描器时提供全限定类名:

 <context:component-scan base-package="a.b"

 scope-resolver="footmark.SimpleScopeResolver" />

 

 

内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值