Spring5(一-二)

Posted 麦克叔叔每晚10点说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring5(一-二)相关的知识,希望对你有一定的参考价值。

在AppConfig.java配置类中,我们完成了以下操作:


l  使用 @Configuration注解标记为一个Spring配置类。

l  使用 @EnableTransactionManagement开启基于注解的事务管理。

l  配置 @EnableJpaRepositories指定去哪查找Spring Data JPA资源库(repository)。

l  使用 @PropertySource注解和 PropertySourcesPlaceholderConfigurer Bean定义配置PropertyPlaceHolder bean从 application.properties文件加载配置。

l  为DataSource、JAP的EntityManagerFactory和JpaTransactionManager定义Bean。

l  配置DataSourceInitializer Bean,在应用启动时,执行 data.sql脚本来初始化数据库。


我们需要在 application.properties中完善配置,如下所示:

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/test

jdbc.username=root

jdbc.password=admin

init-db=true

hibernate.dialect=org.hibernate.dialect.MySQLDialect

hibernate.show_sql=true

hibernate.hbm2ddl.auto=update

我们可以创建一个简单的SQL脚本 data.sql来将演示数据填充到USER表中:

delete from user;

insert into user(id, name)   values(1,'Siva');

insert into user(id, name)   values(2,'Prasad');

insert into user(id, name)   values(3,'Reddy');

我们可以创建一个附带基本配置的 log4j.properties文件,如下所示:

log4j.rootCategory=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

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

log4j.appender.stdout.layout.ConversionPattern=%5p %t %c{2}:%L - %m%n

log4j.category.org.springframework=INFO

log4j.category.com.sivalabs=DEBUG

步骤3:配置Spring MVC Web层的Bean

我们必须配置Thymleaf的ViewResolver、处理静态资源的ResourceHandler和处理i18n的MessageSource等。

@Configuration

@ComponentScan(basePackages   = { "com.sivalabs.demo"})

@EnableWebMvc

public class   WebMvcConfig extends WebMvcConfigurerAdapter

{

    @Bean

    public TemplateResolver   templateResolver() {

        TemplateResolver   templateResolver = new ServletContextTemplateResolver();

          templateResolver.setPrefix("/WEB-INF/views/");

          templateResolver.setSuffix(".html");

          templateResolver.setTemplateMode("HTML5");

        templateResolver.setCacheable(false);

        return   templateResolver;

    }

    @Bean

    public SpringTemplateEngine   templateEngine() {

          SpringTemplateEngine templateEngine = new SpringTemplateEngine();

          templateEngine.setTemplateResolver(templateResolver());

        return   templateEngine;

    }

    @Bean

    public ThymeleafViewResolver   viewResolver() {

          ThymeleafViewResolver thymeleafViewResolver = new   ThymeleafViewResolver();

          thymeleafViewResolver.setTemplateEngine(templateEngine());

          thymeleafViewResolver.setCharacterEncoding("UTF-8");

        return   thymeleafViewResolver;

    }

    @Override

    public void   addResourceHandlers(ResourceHandlerRegistry registry)

    {

          registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");

    }

    @Override

    public void   configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)

    {

          configurer.enable();

    }

    @Bean(name =   "messageSource")

    public MessageSource   configureMessageSource()

    {

          ReloadableResourceBundleMessageSource messageSource = new   ReloadableResourceBundleMessageSource();

          messageSource.setBasename("classpath:messages");

          messageSource.setCacheSeconds(5);

          messageSource.setDefaultEncoding("UTF-8");

        return   messageSource;

    }

}

在WebMvcConfig.java配置类中,我们完成了以下操作:

l  使用 @Configuration注解标记为一个Spring配置类。

l  使用 @EnableWebMvc注解启用基于注解的Spring MVC配置。

l  通过注册TemplateResolver、SpringTemplateEngine和`hymeleafViewResolver Bean来配置Thymeleaf视图解析器。

l  注册ResourceHandler Bean将以URI为 /resource/**的静态资源请求定位到 /resource/目录下。

l  配置MessageSource bean从classpath下加载messages-{国家代码}.properties文件来加载i18n配置。


现在我们没有配置任何i18n内容,所以需要在 src/main/resources文件夹下创建一个空的 messages.properties文件。


步骤4:注册Spring MVC的前端控制器DispatcherServlet


在Servlet 3.x规范之前,我们必须在web.xml中注册Servlet/Filter。由于当前是Servlet 3.x规范,我们可以使用ServletContainerInitializer以编程的方式注册Servlet /Filter。


Spring MVC提供了一个惯例类AbstractAnnotationConfigDispatcherServletInitializer来注册DispatcherServlet。

public class SpringWebAppInitializer extends   AbstractAnnotationConfigDispatcherServletInitializer

{

    @Override

    protected   Class<?>[] getRootConfigClasses()

    {

          return new Class<?>[] { AppConfig.class};

    }

    @Override

    protected   Class<?>[] getServletConfigClasses()

    {

          return new Class<?>[] { WebMvcConfig.class };

    }

    @Override

    protected   String[] getServletMappings()

    {

          return new String[] { "/" };

    }

    @Override

    protected   Filter[] getServletFilters() {

       return   new Filter[]{ new OpenEntityManagerInViewFilter() };

    }

}

在SpringWebAppInitializer.java配置类中,我们完成了以下操作:

l  我们将 AppConfig.class配置为RootConfigurationClass,它将成为包含了所有子上下文(DispatcherServlet)共享的Bean定义的父ApplicationContext。

l  我们将 WebMvcConfig.class配置为ServletConfigClass,它是包含了WebMvc Bean定义的子ApplicationContext。

l  我们将 /配置为ServletMapping,这意味所有的请求将由DispatcherServlet处理。

l  我们将OpenEntityManagerInViewFilter注册为Servlet过滤器,以便我们在渲染视图时可以延迟加载JPA Entity的延迟集合。


步骤5:创建一个JPA实体和Spring Data JPA资源库

为User实体创建一个JPA实体User.java和一个Spring Data JPA资源库。

@Entity

public class User

{

    @Id   @GeneratedValue(strategy=GenerationType.AUTO)

    private Integer   id;

    private String   name;

    //setters and   getters

}

public interface UserRepository extends JpaRepository<User,   Integer>

{

}

步骤6:创建一个Spring MVC控制器

创建一个Spring MVC控制器来处理URL为 /,并渲染一个用户列表。

@Controller

public class HomeController

{

    @Autowired   UserRepository userRepo;

      @RequestMapping("/")

    public String   home(Model model)

    {

          model.addAttribute("users", userRepo.findAll());

          return "index";

    }

}

   


步骤7:创建一个Thymeleaf视图/WEB-INF/views/index.html来渲染用户列表

<!DOCTYPE   html>

<html xmlns="http://www.w3.org/1999/xhtml"

        xmlns:th="http://www.thymeleaf.org">

<head>

<meta charset="utf-8"/>

<title>Home</title>

</head>

<body>

    <table>

          <thead>

              <tr>

                  <th>Id</th>

                  <th>Name</th>

              </tr>

          </thead>

          <tbody>

              <tr th:each="user : ${users}">

                  <td   th:text="${user.id}">Id</td>

                  <td   th:text="${user.name}">Name</td>

              </tr>

          </tbody>

    </table>

</body>

</html>

我们都配置好了,可以运行应用了。但在此之前,我们需要在您的IDE中下载并配置像Tomcat、Jetty或者Wildfly等服务器。


您可以下载Tomcat 8并配置在您喜欢的IDE中,之后运行应用并将浏览器指向 http://localhost:8080/springmvc-jpa-demo。您应该看到一个以表格形式展示的用户详细信息列表。


发个小广告!!!走过路过,不要错过!新书来啦!!!

Spring5(一-二)
Spring5(一-二)
Spring5(一-二)

这里有你想买的书!

http://product.dangdang.com/23949549.html#ddclick_reco_reco_relate

麦克叔叔每晚十点说


以上是关于Spring5(一-二)的主要内容,如果未能解决你的问题,请参考以下文章

Spring5学习笔记(14) — “Spring5 声明式事务管理”

spring5:JdbcTemplate

spring5:AOP操作

Spring5框架 笔记总结

Spring5学习笔记(13) — “JdbcTemplate 操作数据库(批量增删改)”

Spring5学习笔记(13) — “JdbcTemplate 操作数据库(批量增删改)”