实习日记07/26 day13

杂谈:书接上回

通过使用struts、Mybatis、redis和JSP解决了很多的问题,但这是十几年前流行的解决的方法,到了现在,互联网飞速发展,WEB工程又遇到了诸多问题,那么新技术有帮我们解决了哪些问题呢?

业务篇 part2

1.当业务量剧增的时候,那些当初觉得可以接受的小点也逐渐变得不可忽视了,响应速度、安全、编写规范…等等方面随着业务量的激增而变得要求越来越严苛,面对庞大的业务量,很明显只靠基本的框架已经很难招架了,为了解决复杂的业务,让互联网应用能更上一层楼,EJB应运而生,EJB提供了一套相对而言可靠的商业框架,可以让商务开发得以发展,因为没有使用过,所以我对EJB的理解也不是很深,但作为一个重量级框架,它的诞生让B/S端有了更多的可能,更多的业务可以被放在服务器中为大家提供服务,相当于上会的那个白痴小玩偶穿上了复杂,正式的西装,摇身一变成了商业人士。

2.借用Spring in Action中的描述,Spring的诞生是为了反对EJB对Java开发工程师的折磨。它相比于EJB更加的轻量化,更简单易用,这点在SpringBoot中体现的淋漓尽致。EJB很棒,但是它是一个重量级框架,这时候程序员面对的问题就是那些复杂难以理解的API,对于程序员来说学习难度不是一般的大。这时Spring出现了,解救人们于水火之中。它提供了功能强大IOC、AOP及Web MVC等功能,除此之外像胶水一样可以与其他的架构紧密配合,例如我最开始学习的就是SSH,Spring+Hibernate+Struts,并用它完成了一个游戏交流网站。相对于EJB,Spring更像让小玩偶穿上一个一个轻便的工装,口袋里满满当当的工具,功能强大开发方便。
简单介绍一下IOC和AOP:
我个人理解,IOC控制反转是一种理念,就是将对组件的控制权移交,而DI,依赖注入则是IOC的一种实现方式,将强耦合的组件们保持其配合,但之间又不相互耦合。就像想让小玩偶售出货物,难道换一个货物就要重新编程一次?这显然是不对的,于是乎将将商品这个概念注入到售出的方法之中,可以注入其他具体的物品,然后售出,这样就是以DI的方式实现了IOC。
AOP,切面编程我则是这么理解的:小玩偶售出前后都要有一个像经理汇报,然后经理记录的动作,此时是需要将经理对象放入小玩偶的售出方法内吗?让小玩偶控制经理记录吗?这显然是不合理的,于是切面编程的作用,将小玩偶的售出方法切开,漏出发生前和发生后的两个切面,再将经理的记录动作加入到这两个时刻,完成整个售卖过程。(理解的不是很透彻,欢迎补充)

3.如果说Spring是一个装满工具的容器,假如你发现这个容器自带的功能比里面有些容器还好用,你会怎么办?丢掉Struts,换上SpringMVC。由于SpringMvc和Spring是完美搭配的,再加上SpringMVC开发起来快于Struts,再加上Struts2被曝出过有安全漏洞,导致SpringMVC后来居上,让SSM成为了当时主流的JavaWEB架构。

4.程序员们用着简单的SpringMVC时,本想着这下可以满足需求了,但是又有一部分的程序员觉得过多的配置文件打扰到他们写代码了,为了解决这个问题,SpringBoot出现了,Spring Boot实现了自动配置,降低了项目搭建的复杂度。相比于以前我写SSH架构的项目,SpringBoot简直是yyds。
这是我两年前刚学习时的配置代码:还有其他乱七八糟的就不放了

<?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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	 http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	  http://www.springframework.org/schema/tx 
	  http://www.springframework.org/schema/tx/spring-tx.xsd"
	xmlns:tx="http://www.springframework.org/schema/tx">

	<bean
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:jdbc.properties</value>
			</list>
		</property>
	</bean>


	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver"></property>
		<property name="url"
			value="jdbc:mysql://localhost:3307/sshtest?useUnicode=true&amp;characterEncoding=UTF-8">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="13137582303"></property>
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/ssh/entity/TUser.hbm.xml</value>
				<value>com/ssh/entity/Recom1.hbm.xml</value>
				<value>com/ssh/entity/Msg.hbm.xml</value>
				<value>com/ssh/entity/Msg2.hbm.xml</value>
				<value>com/ssh/entity/Imgroom.hbm.xml</value>
			</list>
		</property>
	</bean>
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<bean id="baseTransactionProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
		abstract="true">
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
			<props>
				<!-- 指明进行事务管理业务方法名[*是通配符] -->
				<prop key="add*">PROPAGATION_REQUIRED</prop>
				<prop key="save*">PROPAGATION_REQUIRED</prop>
				<prop key="edit*">PROPAGATION_REQUIRED</prop>
				<prop key="del*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
	<!-- 登录Action -->
	<bean id="loginAction" class="com.ssh.action.LoginAction"
		scope="singleton">
		<property name="userService" ref="userService" />
	</bean>

	<!-- userDAO -->
	<bean id="userDAO" class="com.ssh.dao.UserDAOImpl"
		parent="daoTemplate" />
	<bean id="userService" parent="baseTransactionProxy">
		<property name="target">
			<bean class="com.ssh.service.UserServiceImpl">
				<property name="userDAO" ref="userDAO" />
			</bean>
		</property>
	</bean>

	<!-- dao -->
	<bean id="baseDao" class="com.ssh.dao.BaseDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory"></ref>
		</property>
	</bean>
	<bean id="userDaoImpl" class="com.ssh.dao.NewDaoImpl"
		parent="baseDao"></bean>
	<bean id="recomDaoImpl" class="com.ssh.dao.RecomDaoImpl"
		parent="baseDao"></bean>
	<bean id="msgDaoImpl" class="com.ssh.dao.MsgDaoImpl"
		parent="baseDao"></bean>
	<bean id="msgDaoImpl2" class="com.ssh.dao.MsgDaoImpl1"
		parent="baseDao"></bean>
	<!-- action -->
	<bean id="validateAction" class="com.ssh.action.Regist">
		<property name="userServiceImpl" ref="newServiceImpl"></property>
	</bean>
	<bean id="addRecomAction" class="com.ssh.action.RecomAction">
		<property name="recomServiceImpl" ref="recomServiceImpl"></property>
	</bean>
	<bean id="addMsg" class="com.ssh.action.MsgAction">
		<property name="msgDaoImpl" ref="msgServiceImpl"></property>
	</bean>
	<bean id="addMsg2" class="com.ssh.action.MsgAction2">
		<property name="msgDaoImpl" ref="msgServiceImpl2"></property>
	</bean>
	<!-- service -->
	<bean id="newServiceImpl" class="com.ssh.service.NewServiceImpl">
		<property name="userDaoImpl" ref="userDaoImpl"></property>
	</bean>
	<bean id="recomServiceImpl"
		class="com.ssh.service.RecomServiceImpl">
		<property name="recomdaoImpl" ref="recomDaoImpl"></property>
	</bean>
	<bean id="msgServiceImpl" class="com.ssh.service.MsgServiceImpl">
		<property name="msgDaoimpl" ref="msgDaoImpl"></property>
	</bean>
	<bean id="msgServiceImpl2" class="com.ssh.service.MsgServiceImpl2">
		<property name="msgDaoimpl" ref="msgDaoImpl2"></property>
	</bean>

	<bean id="daoTemplate" abstract="true">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<tx:annotation-driven
		transaction-manager="transactionManager" />
</beans>

这是现在SpringBoot的:

server:
  port: 8899
spring:
  datasource:
    url: jdbc:mysql://localhost:3307/shoeprotect?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&serverTimeZone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  redis:
    host: 127.0.0.1
    port: 6379
    database: 0
  thymeleaf:
    prefix:
     classpath: /templates/
    check-template-location: true
    suffix: .html
    encoding: UTF-8
    servlet:
      content-type: text/html
    cache: false
    mode: HTML

所以说懒惰才是科技进步的第一动力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值