基于maven的ssm框架整合的示例代码

 

基本概念

1.1、Spring

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、MyBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

第一步:通过maven建立一个web项目。

第二步:pom文件导入jar包

(1) pom.xml

我把我pom文件整个都拷贝来了,有些初始化就有的东西你要去掉,保留你自己pom生成的那份。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

<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>com.test</groupId>

 <artifactId>ssm</artifactId>

 <packaging>war</packaging>

 <version>0.0.1-SNAPSHOT</version>

 <name>ssm Maven Webapp</name>

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

  

 <properties>

  <!-- spring版本号 -->

  <spring.version>4.0.2.RELEASE</spring.version>

  <!-- mybatis版本号 -->

  <mybatis.version>3.2.6</mybatis.version>

  <!-- log4j日志文件管理包版本 -->

  <slf4j.version>1.7.7</slf4j.version>

  <log4j.version>1.2.17</log4j.version>

 </properties>

  

 <dependencies>

 <dependency>

  <groupId>junit</groupId>

  <artifactId>junit</artifactId>

  <version>3.8.1</version>

  <scope>test</scope>

 </dependency>

  <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-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-webmvc</artifactId>

   <version>${spring.version}</version>

  </dependency>

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-aop</artifactId>

   <version>${spring.version}</version>

  </dependency>

  

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-context-support</artifactId>

   <version>${spring.version}</version>

  </dependency>

  

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-test</artifactId>

   <version>${spring.version}</version>

  </dependency>

  <!-- mybatis核心包 -->

  <dependency>

   <groupId>org.mybatis</groupId>

   <artifactId>mybatis</artifactId>

   <version>${mybatis.version}</version>

  </dependency>

  <!-- mybatis/spring包 -->

  <dependency>

   <groupId>org.mybatis</groupId>

   <artifactId>mybatis-spring</artifactId>

   <version>1.2.2</version>

  </dependency>

  <!-- 导入java ee jar 包 -->

  <dependency>

   <groupId>javax</groupId>

   <artifactId>javaee-api</artifactId>

   <version>7.0</version>

  </dependency>

  <!-- 导入Mysql数据库链接jar包 -->

  <dependency>

   <groupId>mysql</groupId>

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

   <version>5.1.30</version>

  </dependency>

  <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->

  <dependency>

   <groupId>commons-dbcp</groupId>

   <artifactId>commons-dbcp</artifactId>

   <version>1.2.2</version>

  </dependency>

  <!-- JSTL标签类 -->

  <dependency>

   <groupId>jstl</groupId>

   <artifactId>jstl</artifactId>

   <version>1.2</version>

  </dependency>

  <!-- 日志文件管理包 -->

  <!-- log start -->

  <dependency>

   <groupId>log4j</groupId>

   <artifactId>log4j</artifactId>

   <version>${log4j.version}</version>

  </dependency>

    

    

  <!-- 格式化对象,方便输出日志 -->

  <dependency>

   <groupId>com.alibaba</groupId>

   <artifactId>fastjson</artifactId>

   <version>1.1.41</version>

  </dependency>

  

  

  <dependency>

   <groupId>org.slf4j</groupId>

   <artifactId>slf4j-api</artifactId>

   <version>${slf4j.version}</version>

  </dependency>

  

  <dependency>

   <groupId>org.slf4j</groupId>

   <artifactId>slf4j-log4j12</artifactId>

   <version>${slf4j.version}</version>

  </dependency>

  <!-- log end -->

  <!-- 映入JSON -->

  <dependency>

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

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

   <version>1.9.13</version>

  </dependency>

  <!-- 上传组件包 -->

  <dependency>

   <groupId>commons-fileupload</groupId>

   <artifactId>commons-fileupload</artifactId>

   <version>1.3.1</version>

  </dependency>

  <dependency>

   <groupId>commons-io</groupId>

   <artifactId>commons-io</artifactId>

   <version>2.4</version>

  </dependency>

  <dependency>

   <groupId>commons-codec</groupId>

   <artifactId>commons-codec</artifactId>

   <version>1.9</version>

  </dependency>

 </dependencies>

 <build>

 <finalName>ssm</finalName>

 </build>

</project>

第三步:看整体的项目架构,先说明下我这里还没有有关springMVC的相关东西,因为我先整合sping-mybatis,在测试是否成功,成功在整合springMVC

第四步:建立model类

?

1

2

3

4

5

6

7

public class User {

 private int id;

 private String name;

 private String password;

 private String password2;

/*提供set和get方法,toString方法*/

}

第五步:创建数据库,UserDao接口和mapper映射文件

(1)建立很简单的一张表

(2)UserDao接口

?

1

2

3

public interface UserDao {

  User findUserById(User user);

}

(3)UesrMapper.xml

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace命名空间,指向UserDao全路径-->

<mapper namespace="com.ssm.dao.UserDao">

 

 <!-- 根据id查询用户信息 -->

 <!--

  id:唯一标识 一个statement,和UserDao方法名一致

  #{}:表示 一个占位符,如果#{}中传入简单类型的参数,#{}中的名称随意

  parameterType:输入 参数的类型,和UserDao()里参数一致

  resultType:输出结果 类型,和UserDao()返回类型一致

  -->

 <select id="findUserById" parameterType="com.ssm.model.User" resultType="com.ssm.model.User">

  SELECT * FROM USER

  <where>

  <if test="name != null">

   AND Name= #{name}

  </if>

  <if test="password != null">

   AND password= #{password}

  </if>

  </where>

 </select>

 </mapper>

第五步:创建UserService和UserServiceImpl

(1)UserService

?

1

2

3

public interface UserService {

  public User getUserById(User user);

}

(2)UserServiceImpl

?

1

2

3

4

5

6

7

8

9

10

11

12

import org.springframework.stereotype.Service;

import com.ssm.dao.UserDao;

import com.ssm.model.User;

import com.ssm.service.UserService;

@Service("userService")

public class UserServerImpl implements UserService {

 @Resource

 private UserDao userDao;

 public User getUserById(User user) {

  return this.userDao.findUserById(user);

 }

}

第六步:创建jdbc文件和log日志文件

(1)jdbc.properties

?

1

2

3

4

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc\:mysql\://localhost\:3306/test?useUnicode=true&&characterEncoding=UTF-8

jdbc.username=root

jdbc.password=root

(2)log4j.properties

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

log4j.rootLogger=INFO,Console,File

#定义日志输出目的地为控制台

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.Target=System.out

#可以灵活地指定日志输出格式,下面一行是指定具体的格式

log4j.appender.Console.layout = org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

  

#文件大小到达指定尺寸的时候产生一个新的文件

log4j.appender.File = org.apache.log4j.RollingFileAppender

#指定输出目录

log4j.appender.File.File = logs/ssm.log

#定义文件最大大小

log4j.appender.File.MaxFileSize = 10MB

# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志

log4j.appender.File.Threshold = ALL

log4j.appender.File.layout = org.apache.log4j.PatternLayout

log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

第七步:整合spring-mybatis.xml

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

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

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

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

 xsi:schemaLocation="http://www.springframework.org/schema/beans

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

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

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

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

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

 <!-- 自动扫描 -->

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

 <!-- 引入实现jdbc配置文件 -->

 <bean id="propertyConfigurer"

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

  <property name="location" value="classpath:jdbc.properties" />

 </bean>

  

 <!-- 2.数据库连接池 -->

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"

  destroy-method="close">

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

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

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

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

 </bean>

  

  <!-- spring和MyBatis整合,通过spring来管理MyBatis的SqlSessionFactory会话工厂 -->

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

  <!-- 指定数据库连接池引用 -->

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

  <!-- 自动扫描mapping.xml文件 -->

  <property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"></property>

 </bean>

  

 <!-- DAO接口所在包名,Spring会自动查找其下的类 -->

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  <property name="basePackage" value="com.ssm.dao" />

  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>

 </bean>

  

 <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->

 <bean id="transactionManager"

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

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

 </bean>

</beans>

第八步:建立测试类

经过以上步骤(log4j不配也没影响),我们已经完成了Spring和mybatis的整合,这样我们就可以编写一段测试代码来试试是否成功了。

测试类在src/test/java中建立,如果测试成功,表示Spring和Mybatis已经整合成功了。输出信息使用的是Log4j打印到控制台。

(1)TestMyBatis测试类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

package ssm;

 

import javax.annotation.Resource;

 

import org.apache.log4j.Logger;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

 

import com.ssm.model.User;

import com.ssm.service.UserService;

 

/*让测试运行于Spring测试环境*/

@RunWith(SpringJUnit4ClassRunner.class)

 

/*用来指定加载的Spring配置文件的位置,会加载默认配置文件*/

@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })

 

public class TestMyBatis {

 

 @Resource(name = "userService")

 private UserService userService;

 

 @Test

 public void test1() {

  User user=new User();

  user.setName("张三");

  user.setPassword("123");

  User user1 = userService.getUserById(user);

  System.out.println(user1.toString());

 }

}

最后!关键看后台输出,也是见证奇迹的时候,如果输出对象那说明你配置整合成功!

那接下来我们开始整合springMVC

第九步:配置springmvc.xml

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

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

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

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

 xsi:schemaLocation="http://www.springframework.org/schema/beans

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

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

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

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

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

 <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->

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

 <!--避免IE执行AJAX时,返回JSON出现下载文件 -->

 <bean id="mappingJacksonHttpMessageConverter"

  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">

  <property name="supportedMediaTypes">

   <list>

    <value>text/html;charset=UTF-8</value>

   </list>

  </property>

 </bean>

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

 <bean

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

  <property name="messageConverters">

   <list>

    <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->

   </list>

  </property>

 </bean>

 <!-- 定义跳转的文件的前后缀 ,视图模式配置-->

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

  <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->

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

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

 </bean>

   

 <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->

 <bean id="multipartResolver"

  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

  <!-- 默认编码 -->

  <property name="defaultEncoding" value="utf-8" />

  <!-- 文件大小最大值 -->

  <property name="maxUploadSize" value="10485760000" />

  <!-- 内存中的最大值 -->

  <property name="maxInMemorySize" value="40960" />

 </bean>

  

</beans>

第十步:配置web.xml文件

这里面对spring-mybatis.xml的引入以及配置的spring-mvc的Servlet就是为了完成SSM整合,之前2框架整合不需要在此处进行任何配置。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

<?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_3_0.xsd"

 version="3.0">

 <display-name>Archetype Created Web Application</display-name>

 <!-- Spring和mybatis的配置文件 -->

 <context-param>

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

  <param-value>classpath:spring-mybatis.xml</param-value>

 </context-param>

 <!-- 编码过滤器 -->

 <filter>

  <filter-name>encodingFilter</filter-name>

  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

  <async-supported>true</async-supported>

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

 <!-- Spring监听器 -->

 <listener>

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

 </listener>

 <!-- 防止Spring内存溢出监听器 -->

 <listener>

  <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

 </listener>

  

 <!-- Spring MVC servlet -->

 <servlet>

  <servlet-name>SpringMVC</servlet-name>

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

  <init-param>

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

   <param-value>classpath:springmvc.xml</param-value>

  </init-param>

  <load-on-startup>1</load-on-startup>

  <async-supported>true</async-supported>

 </servlet>

 <servlet-mapping>

  <servlet-name>SpringMVC</servlet-name>

  <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->

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

 </servlet-mapping>

 <welcome-file-list>

  <welcome-file>/index.jsp</welcome-file>

 </welcome-file-list>

  

</web-app>

第十一步最后测试:

(1) 先写login.jsp

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<%@ page language="java" contentType="text/html; charset=UTF-8"

 pageEncoding="UTF-8"%>

<html>

<head>

<title>用户登录:</title>

</head>

<body>

<form action="login">

<label>用户名:</label>

<input type="text" id="username" name="username"></input><br><br>

<label>密码:</label>

<input type="text" id="password" name="password"></input><br><br>

<input type="submit" value="登录"/>

</form>

</body>

</html>

界面:

(2)在写UserController

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import com.ssm.dao.UserDao;

import com.ssm.model.User;

@Controller

public class UserController {

 @Resource

 private UserDao userDao; 

@RequestMapping("/jsp/login")

public String login(HttpServletRequest request){

 String username=request.getParameter("username");

 String password=request.getParameter("password");

 User user=new User();

 //根据用户名和学生查询数据库

 user.setName(username);

 user.setPassword(password);

  User users=userDao.findUserById(user);

 //如果有学生就说明登录成功

 if(users!=null){

  return "susscss";

 }

 //这个jsp我没有写,大家知道就好,你们可以自己写

 return "err";

}

}

(3)最后susscss.jsp

?

1

2

3

4

5

6

7

<%@ page language="java" contentType="text/html; charset=UTF-8"

 pageEncoding="UTF-8"%>

<html>

<body>

<P>用户账号密码正确,登录成功</P>

</body>

</html>

完美!

 

1.Spring简介 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 A.控制反转(IOC)是什么呢? IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。 [注意]:面试的时候,如果有条件,画图,这样更加显得你懂了 B.面向切面(AOP)又是什么呢? 首先,需要说明的一点,AOP只是Spring的特性,它就像OOP一样是一种编程思想,并不是某一种技术,AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。 [简单点解释],比方说你想在你的biz层所有类中都加上一个打印‘你好,AOP’的功能这你经可以用aop思想来做,你先写个类写个方法,方法经实现打印‘你好,AOP’让后你Ioc这个类 ref=“biz.*”让每个类都注入。 2.Spring MVC简介 Spring MVC属于Spring Framework的后续产品,已经融合在Spring Web Flow里面,它原生支持的Spring特性,让开发变得非常简单规范。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 3.MyBatis简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。可以这么理解,MyBatis是一个用来帮你管理数据增删改查的框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值