Spring学习4(2):Spring Boot的三层次

版权声明:本文real_Rickys原创文章,未经real_Rickys允许不得转载。 https://blog.csdn.net/real_Rickys/article/details/82939845

Spring学习4(2)

&mesp;相同于spring的开发流程spring boot也是遵循持久层,业务层和展现层这三个层次的流程开发的。

持久层

初始化配置

 在持久层上,最重要的就是数据库的操作。spring框架有好多可选的数据库操作方式,可以直接如我们在学习3中使用spring内置的jdbcTemplate:启动器为spring-boot-starter-jdbc;也可以使用第三方的持久化框架:启动器为spring-boot-starter-data-jpa。
 我们和书上一样选择jdbc的启动器,在pom文件中增加如下代码:

<dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    </dependency>

 这里会发现都没有写明版蹦,这是因为在parent中都会规定好,要看具体的版本可以按住ctrl和鼠标左键点击parent标签,不断的向顶层走最后遇到个没有parent标签的pom可以看到很多的version在这个顶层pom被设定好了。

 在导入了依赖包后,为力让spring boot能够自动装配数据源的连接在代码根目录resources下创建一个application.properties配置数据库的链接信息,代码如下:

#1
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=rootroot
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#2
#spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource

#3
spring.datasource.max-wait=10000
spring.datasource.max-active=50
spring.datasource.max-idle=10
spring.datasource.min-idle=8
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=select 1

#4
#spring.datasource.jndi-name=java:comp/env/jdbc/sampleDs

#5
#spring.datasource.initialize=true
#spring.datasource.platform=mysql
#spring.datasource.data=data
#spring.datasource.schema=schema

 在spring boot中可以用两种方式配置数据库连接,一种就是代码中#1处使用datasource来配置数据库连接信息。在默认情况下,连接池用到是tomcat-jdbc,如果需要自定义格式同代码中的#2.一开始我还以为jetty是不能用的,后来才知道连接池是用来优化性能的,和你使用啥服务器关系不大。
 另一种方式是使用jndi如同这里的#4,企业中常用这种方法来连接。
 代码中的#3是用来提供连接池的配置信息的,#5是用来初始化数据库脚本的。

UserDao

 在完成了配置后,如同学习3一样,我们定义一个UserDao和LoginLogDao,这里domain中的User.java和LoginLog.java以及UserDao,LoginLogDao和学习3中的代码是一样的,只不过不用boot的时候是需要将dao装入到spring容器中的,那么在boot中节省了这一步。

业务层

 这里的业务层同样于学习3的代码没有改动,只有一个UserService。那么spring boot中的特色就是如果要使用事务就在application这个主类上添加EnableTranscationManagement注解如下:

package com.smart;
import org.springframework.boot.SpringApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
@EnableTransactionManagement
public class Application{
	public static void main(String[] args)throws Exception{
		SpringApplication.run(Application.class,args);
	}
}

 这样它就会自动去找别标记为@Transactional的方法。

展现层

 如同学习3,我们仍然勇敢mvc来实现展现层。

配置pom.xml依赖

 展现层中使用了jsp和jstl标签,所以我们要添加依赖并且将打包方式改为war,增加的代码如下:

  <packaging>war</packaging>
  <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
        <dependency>
    	<groupId>org.eclipse.jetty</groupId>
    	<artifactId>jetty-jsp</artifactId>
    </dependency>

配置Spring MVC框架

 修改一下Application即可启用MVC,代码如下:

package com.smart;
import org.springframework.boot.SpringApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
@EnableTransactionManagement
public class Application extends SpringBootServletInitializer{
	public static void main(String[] args)throws Exception{
		SpringApplication.run(Application.class,args);
	}
	
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(Application.class);
	}
}

 这里的改动是让application来继承了boot提供的servlet的初始化器,并重写了其中的configure()方法。

处理登陆请求

 这里仍然编写LoginController,代码同学习3,并且将login.jsp和main.jsp放入src/main/webapp/WEB_INF/jsp中。
 这里需要知道的是spring boot对/static,/public,/resources或是/META_INF/resources目录下的静态文件提供支持。
 完成上述目录后,最后在application.properties中配置视图路径,代码如下:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

 这里prefix是指定视图路径前缀,suffix是指定视图后缀。
 启动spring boot就可以看到结果了。

猜你喜欢

转载自blog.csdn.net/real_Rickys/article/details/82939845
今日推荐