SpringBoot的入门使用

1.springboot的认识
–springboot可以看成是一个框架,或者是一些maven的集合,通过springboot可以快速构建项目、编译和部署、监控。
2.springboot的使用
–简单入门程序:
pom.xml配置:

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.5.RELEASE</version>
</parent>
	<--添加spring-boot-starter-web依赖-->
<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
</dependency>

创建启动器:

@SpringBootApplication
public class TestApp {

    public static void main(String[] args) {
        SpringApplication.run(TestApp.class);
    }
}

创建controller:

@RestController
public class HelloController {
    @RequestMapping("/index")
    public String index(){
        return "fuck you";
    }
}

浏览器访问:http://localhost:8080/index 就可以获得结果
实现热部署功能,在pom.xml中配置:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>true</scope>
</dependency>

<plugin>
  <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
       <!--fork :  如果没有该项配置,可能devtools不会起作用,即应用不会restart -->
       <fork>true</fork>
   </configuration>
</plugin>

–springboot对jsp的支持
pom.xml配置:

 <!-- 依赖配置-->
        <!-- web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- servlet 依赖. -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <!-- tomcat 的支持. -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

创建一个配置文件application.propertis,用于拼接路径:

# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp

启动器:

@SpringBootApplication
public class JspApp {
    public static void main(String[] args) {
        SpringApplication.run(JspApp.class);
    }
}

Controller:

@Controller
public class JspController {
    @RequestMapping("/index")
    public String index(){
        return "index";
    }
}

这样就可以访问在 /WEB-INF/jsp/index.jsp的页面
–对freemaker的支持
pom.xml的配置:

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>cn.itsource.MakerApp</mainClass> <!--主类 包含main-->
                    <layout>JAR</layout>
                </configuration>
            </plugin>
        </plugins>
    </build>

配置application.properties:

# FreeeMarker 模板引擎配置
#       设定ftl文件路径
spring.freemarker.tempalte-loader-path=classpath:/templates
#        关闭缓存,及时刷新,上线生产环境需要修改为true
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.request-context-attribute=request
spring.freemarker.suffix=.ftl

在resource目录下创建一个templates文件夹,将模板放在里面,注意文件夹的名称必须是templates
在这里插入图片描述
模板index.ftl:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <title>Hello World!</title>
</head>
<body>
<h1>Hello , ${msg}</h1>
</body>
</html>

Controller层

@Controller
public class IndexController {
    @RequestMapping("/index")
    public String index(Model model){
        model.addAttribute("msg", "老王");
        return "index";
    }
}

启动器:

@SpringBootApplication
public class MakerApp {
    public static void main(String[] args) {
        SpringApplication.run(MakerApp.class);
    }
}

3.对json的支持,yml配置文件的配置
–在Controller层的类上方直接配置@RestController,表示 @Controller + @ResponseBody
–yml配置文件,在resources资源文件中,不仅可以使用application.properties的方式配置,也可以使用application.yml的配置方式,采用yml的配置方式,可以使结构更加清晰。
yml配置的原则:
1、大小写敏感
2、使用缩进表示层级关系
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
5、使用#表示注释
6、字符串可以不用引号标注
格式:

#表示修改接口为80
server:
  port: 80

–Spring Profiles多环境支持,通过配置多个yml,可以实现对不同环境的支持
application.yml:基础的yml,可以通过配置,调用其他的yml的配置环境
调用yml的方式:

spring:
  profiles:
    active: name

application-name.yml表示一个配置环境,可以被调用
–springboot打包运行方式
配置pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>utf-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                    <mainClass>cn.itsource.freemark.FreemarkTest</mainClass> <!--主类 包含main-->
                    <layout>JAR</layout>
            </configuration>
        </plugin>
    </plugins>
</build>

cmd进入项目,运行mvn clean package spring-boot:repackage,得到jar包,在target目录下,在target目录下运行jar包, java -jar 包名.jar
激活指定profile的方式:如果有多个yml的配置环境,可以指定运行:
java -jar -Dspring.profiles.active=name 包名.jar 运行指定的环境。
4.springboot测试
–配置pom.xml

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>

–启动器

@SpringBootApplication
Public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

–测试代码

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class) //这事一个Spring测试,要告诉它在哪儿加载Spring配置文件,其实告诉它应用类型就ok
Public class SpringbootTest {
	@Test
	publicvoid test() throws Exception {
		System.out.println(“测试一下。。。”);
	}
}

5.springboot集成springJDBC
–配置pom.xml

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

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

–配置application.properties

spring.datasource.url = jdbc:mysql://localhost:3306/boot
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

–实现三层
domain-dao-service
dao:

@Repository
public class UserDaoImpl implements IUserDao{

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void save(User user) {
        String sql="insert into t_user(name) values(?)";
        jdbcTemplate.update(sql,user.getName());
    }
}

service,需要事务:

@Service
@Transactional(propagation = Propagation.SUPPORTS)
public class UserServiceImpl implements IUserService{

    @Autowired
    IUserDao userDao;

    @Override
    @Transactional(propagation = Propagation.REQUIRED,readOnly = false)
    public void save(User user) {
        userDao.save(user);
    }
}

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = JdbcApp.class)
public class UserTest {

    @Autowired
    private IUserService userService;

    @Test
    public void test() throws Exception{
        User user=new User();
        user.setName("老王");
        userService.save(user);
    }
}

6.springboot集成mybatis
–配置pom.xml

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!-- mysql 数据库驱动. -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--
                    spring-boot mybatis依赖:
                    请不要使用1.0.0版本,因为还不支持拦截器插件,
                1.1.1 是博主写帖子时候的版本,大家使用最新版本即可
                 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!--
            MyBatis提供了拦截器接口,我们可以实现自己的拦截器,
            将其作为一个plugin装入到SqlSessionFactory中。
                Github上有位开发者写了一个分页插件,我觉得使用起来还可以,挺方便的。
                Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper
             -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.0</version>
        </dependency>

–配置实体类的映射器

<?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">
<mapper namespace="cn.itsource.mapper.UserMapper">
    <!--void save(User user);-->
    <insert id="save" parameterType="User" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        insert into t_user(name) values(#{name})
    </insert>
    <!--分页-->
    <select id="findPage" resultType="User">
        SELECT * FROM t_user
    </select>
</mapper>

配置application.properties

同上
#别名
mybatis.type-aliases-package=cn.itsource.domain

–启动器需要对mapper层,service层进行扫描

@SpringBootApplication
@MapperScan("cn.itsource.mapper")
public class MybatisApp {
    public static void main(String[] args) {
        SpringApplication.run(MybatisApp.class);
    }
}

–实现分页功能
需要一个配置的类,与配置文件的功能类似

@SpringBootConfiguration
public class MyBatisConfiguration {

    //相当于配置了一个bean
    //<bean class="com.github.pagehelper.PageHelper">
    //<property key="offsetAsPageNum"  value="true"></property>
    //<property key="rowBoundsWithCount"  value="true"></property>
    //<property key="reasonable"  value="true"></property>
    // <bean/>
    @Bean
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "true");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值