java spring4现在推荐使用annotation而不是配置文件有什么优点

java spring4现在推荐使用annotation而不是配置文件有什么优点,第1张

spring 注解可以减少xml配置;

注释配置相对于 XML 配置具有很多的优势:

它可以充分利用 Java

的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO

的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java

反射机制获取。

注释和 Java 代码位于一个文件中,而 XML

配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的

XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。

spring4零配置配置默认html页面的方法是在视图解析器中配置实现的。

比如,项目中以打开login.html为例来说明:

以下是spring-servlet.xml的配置,其中重点是property中的html属性配置。

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

<!--<context:annotation-config />-->

<!-- 把标记了@Controller注解的类转换为bean -->

<context:component-scan base-package="controller" />

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

<!-- 设置freeMarker的配置文件路径 -->

<bean id="freemarkerConfiguration"

class="org.springframework.beans.factory.config.PropertiesFactoryBean">

<!--注释掉的下方代码是指引freemarker的基本信息的配置位置,因为我已经将配置信息移到了applicationContext文件下,所以这里就没必要存在了,不注释也不会有问题的 -->

<!--<property name="location" value="classpath:/WEB-INF/config/freemarker.properties" />-->

</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

<property name="exposeRequestAttributes" value="true" />

<property name="exposeSessionAttributes" value="true" />

<property name="viewClass">

<value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>

</property>

<property name="cache"><value>true</value></property>

<!--这里需要注意一下,我注释了下面这样一行代码,这行代码的意思就是指引freemarker需要解析的文件的位置。注释掉原因是因为

applicationContext.xml里有这样一行代码:<property name="templateLoaderPath" value="/WEB-INF/views/" />已经指定了视图位置。如果我们这里依然保留下方代码,页面回报406的找不到的错误 -->

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

<property name="suffix"><value>.html</value></property>

<property name="contentType">

<value>text/htmlcharset=UTF-8</value>

</property>

</bean>

</beans>

运行结果:

标准的Spring配置文件编写:

<?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-2.5.xsd

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

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

default-autowire="byName" default-lazy-init="true">

<!-- 配置数据源 -->

<bean id="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName">

<value>com.mysql.jdbc.Driver</value>

</property>

<property name="url">

<value>

jdbc:mysql://localhost/ssh?characterEncoding=utf-8

</value>

</property>

<property name="username">

<value>root</value>

</property>

<property name="password">

<value>123</value>

</property>

</bean>

<!--配置SessionFactory -->

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource">

<ref bean="dataSource" />

</property>

<property name="mappingResources">

<list>

<value>com/ssh/pojo/User.hbm.xml</value>

</list>

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.show_sql">true</prop>

</props>

</property>

</bean>

<!-- 事务管理 -->

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

<!-- hibernateTemplate -->

<bean id="hibernateTemplate"

class="org.springframework.orm.hibernate3.HibernateTemplate">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

<!-- 配置数据持久层 -->

<bean id="userDao"

class="com.ssh.dao.impl.UserDaoImpl">

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

</bean>

<!-- 配置业务逻辑层 -->

<bean id="userService"

class="com.ssh.service.impl.UserServiceImpl">

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

</bean>

<!-- 配置控制层 -->

<bean id="UserAction"

class="com.ssh.action.UserAction" scope="prototype">

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

</bean>

<!-- 配置pojo -->

<bean id="User" class="com.ssh.pojo.User" scope="prototype"/>

</beans>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8072694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存