SpringBoot从入门到进阶

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

一、创建一个SpringBoot工程

1. 通过SpringInitializr来创建
这里写图片描述
这里写图片描述
2. pom.xml中就会有以下内容

<dependencies>
   <!-- springmvc整合 -->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <!-- springboot测试启动器 -->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>
</dependencies>

<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>

二、SpringBoot整合Mybatis和SpringMVC

1. 项目目录介绍
对l1.1. src-main-java(存放代码的地方)
对对注意点:
对对1)自动生成的启动文件SpringboodemoApplication.java要和controller、mapper之类的平级。
对对2)mapper类上贴注解 @org.apache.ibatis.annotations.Mapper
对对对lservice类上贴注解 @org.springframework.stereotype.Service
对对对lcontroller类上贴注解(还有@RequestMapping)
对对对对对@org.springframework.web.bind.annotation.RestController
对对对对对参数上:url上的@PathVariable和普通的@RequestParam
对l1.2. src-main-resource(存放配置文件的地方)
对对注意点:
对对1)mabatis配置文件写在这里。
对对2)application.properties 是一个全局的配置默认加载。
对对对对数据连接四要素。
对对对对spring集成mybatis环境如:
对对对对对对pojo别名扫描包、指定mybatis的核心配置文件位置、配置连接池
对对3)读取配置文件.(文件是:application.properties)
对对对对3.1.通过@Resource标签读取文件。(org.springframework.core.env.Environment)
对对对对对@Resource
对对对对对private Environment environment;
对对对对3.2.获取文件内容。(name为文件中的键)
对对对对对environment.getProperties(“name”);
对l1.3. pom.xml (存放所有的插件以及依赖的地方)
对对注意点:
对对1)这里的东西可以在创建的时候进行勾选。

2.访问项目不需要加入项目名,也不需要配置tomcat(已内置),直接启动启动类即可。

3.项目空跳转html页面。
对l3.1. pom.xml中添加支持从properties配置前后缀。

<!-- 配合application.properties支持页面跳转 -->
<dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
   <scope>provided</scope>
</dependency>

对l3.2. propertiest中配置前后缀。

<!-- 页面默认前缀目录 (页面放在static文件夹) -->
spring.mvc.view.prefix=/
<!-- # 响应页面默认后缀 -->
spring.mvc.view.suffix=.html

三、SpringBoot整合redis。

1.在pom.xml中加入依赖。(redis启动器)

<!-- 配置使用redis启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
</dependency>

2.修改引导类。
对l设置开启缓存。@EnableCaching注解加到启动类上。
3.pojo类上添加实现序列化接口。
4.修改serviceImpl,实现缓存的添加和删除。
对l4.1.注解效果
对对对方法添加@Cacheable 注解实现缓存添加。

queryUserByName(String name) // 方法则删除缓存

对对对方法添加@CacheEvict 注解实现缓存删除。

queryAll() // 执行方法就会使用缓存,如果缓存没有就添加缓存

对l4.2. 注解介绍
对对对参数value是缓存的名字
对对对对对在执行的时候,会找叫这个名字的缓存使用/删除
对对对参数key默认情况下是空串
对对对对对是Spring的一种表达式语言SpEL,我们这里可以随意指定,但是需要注意一定要加单引号
5.手动操作redis。
对l官方提供了三种不同的模板来实现直接操作redis。自己需要的时候只需用@autowired注入模板即可。(RedisConnectionFactory, StringRedisTemplate 和 RedisTemplate)
这里写图片描述
6.配置redis的连接属性。
对lredis启动器默认会去找本地的redis服务,端口是6379.如果需要访问其他的reids服务则需要的application.properties中配置。
对l6.1.单机版。

#Redis
spring.redis.host = 192.168.37.161
spring.reids.port = 6379

对l6.2. 集群版。

#Redis cluster
spring.redis.cluster.nodes=192.168.37.161:7001,192.168.37.161:7002,192.168.37.161:7003,192.168.37.161:7004,192.168.37.161:7005,192.168.37.161:7006

四、SpringBoot整合ActiveMQ

1.加入依赖。

<!-- 配置ActiveMQ启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

2.修改引导类。

// 设置队列,添加一个方法。
@Bean
public Queue queue() {
    return new ActiveMQQueue("itcast.queue");
}

3. 编写发送消息的Controller

@RestController
@RequestMapping("queue")
public class QueueController {
    //注入发送消息的对象
    @Autowired
    private JmsTemplate jmsTemplate;

    //注入消息队列
    @Autowired
    private Destination destination;

    //编写发送消息的方法
    @RequestMapping("send/{message}")
    public String send(@PathVariable String message) {
        this.jmsTemplate.convertAndSend(destination, message);
        return "消息发送成功!消息内容:" + message;
    }
}

4. 编写消费者。

@Component
public class Consumer {
    // 接受消息方法
    @JmsListener(destination = "itcast.queue")
    public void readMessage(String text) {
        System.out.println("接受到的消息是:" + text);
    }
}

5.测试。
对对启动服务后,在浏览器输入以下地址
对对http://127.0.0.1:8080/queue/send/发消息了11
6.注意。
对对SpringBoot内置了ActiveMQ服务,不用单独的启动服务。
对对假如想要用自己的服务,需要在application.properties中配置。

#ActiveMQ
spring.activemq.broker-url=tcp://192.168.37.161:61616

五、整合通用mapper和分页助手。

1.pom.xml中加入依赖。

<!-- 通用mapper -->
<dependency>
    <groupId>com.github.abel533</group>
    <artifactId>mapper</artifactId>
    <version>2.3.4</version>
</dependency>
<!-- 分页助手 -->
<dependency>
    <groupId>com.github.pageHelper</group>
    <artifactId>pageHelper</artifactId>
    <version>3.7.5</version>
</dependency>
<dependency>
    <groupId>com.github.jsqlparser</group>
    <artifactId>jsqlparser</artifactId>
    <version>0.9.1</version>
</dependency>

2.配置文件application.properties中添加配置。

// spring集成Mybatis环境
// pojo扫描别名
mybatis.type-aliases-package=com.example.springboot.pojo
// 加载Mybatis核心配置文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.config-location=classpath:mybatis/SqlMapConfig.xml

3. 在resource\mapper目录下加入UserMapper.xml配置文件。
4. 在resource\mybatis目录下加入SqlMapConfig.xml配置文件。

<configuration>
    <plugins>
        <!-- 分页助手 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql" />
            <!-- 该参数默认为false -->
            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
            <property name="rowBoundsWithCount" value="true" />
        </plugin>

        <!-- 通用Mapper -->
        <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
            <!--主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
            <property name="IDENTITY" value="MYSQL" />
            <!--通用Mapper接口,多个通用接口用逗号隔开 -->
            <property name="mappers" value="com.github.abel533.mapper.Mapper" />
        </plugin>

    </plugins>
</configuration>

5.代码中使用
对对mapper类继承com.github.abel533.mapper.Mapper<T>
对对service类中直接使用分页。

// 使用通用Mapper和分页助手
@Override
public List<User> queryUserByPage(Integer page, Integer rows) {
    // 设置分页
    PageHelper.startPage(page, rows);
    // 使用通用Mapper的方法进行查询所有数据
    List<User> list = this.userMapper.select(null);
    return list;
}

六、使用Junit测试。

1.在pom.xml中加入依赖。

<!-- 配置测试启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

2.测试代码。

//测试类上要贴注解:
    @RunWith(SpringJUnit4ClassRunner.class@SpringBootTest(classes=Application.class)  //指定启动类
//方法上贴注解:
    @Test

七、整合FreeMarker

1.pom.xml 中加入依赖。

<!-- 配置FreeMarker启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
    <scope>test</scope>
</dependency>

2.编写controller。

@Controller
@RequestMapper("fm")
public class fm(Map<String,Object> root){
    root.put("name","张三");
    root.put("date",new Date());

    return "template";
}

3.在src\main\resources\templates编写模板 template.ftl。

hello ${name} ! 当前时间是: ${date?datetime}

八、整合Solr

1.pom.xml 中加入依赖。

<!-- solr启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>

2.修改配置文件 application.properties

// solr配置
spring.data.solr.host=http://127.0.0.1:8081/solr

3.编写 Controller

@Controller
@RequestMapping("solr")
public class SolrController {

    @Autowired
    private SolrClient solrClient;

    @RequestMapping("query/{data}")
    public String query(@PathVariable String data, Map<String, Object> root) throws Exception {
        // 查询solr
        SolrQuery solrQuery = new SolrQuery("title:" + data);
        QueryResponse response = this.solrClient.query(solrQuery);
        SolrDocumentList results = response.getResults();

        // 解析查询结果
        List<String> list = new ArrayList<String>();
        for (SolrDocument solrDocument : results) {
            list.add(solrDocument.get("title").toString());
        }

        // 传递数据
        root.put("total", results.getNumFound());
        root.put("list", list);

        return "solr";

    }

    @RequestMapping("save/{id}/{title}")
    @ResponseBody
    public String save(@PathVariable String id, @PathVariable String title) throws Exception {
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", id);
        doc.addField("title", title);

        this.solrClient.add(doc);
        this.solrClient.commit();

        return "保存成功";

    }

}

3.编写展示模板
对lsrc\main\resources\templates下创建solr.ftl模板

查询到了${total}条数据
<br>
查询结果如下:
<#list list as l >
    <br>${l}
</#list>

猜你喜欢

转载自blog.csdn.net/Phone_1070333541/article/details/81385835