Spring-boot入门

1.作用

  简化spring,体现在它集成spring依赖减少依赖文件和配置xml

2.环境搭建

  使用idea+mybatis+maven+Springboot

  父pom.xml中引入依赖

    <!--引入这个之后相关的引入就不需要添加version配置,spring boot会自动选择最合适的版本进行添加。-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.0.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

  子pom.xml

        <!--引入了Spring MVC和Tomcat的依赖-->
        <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>
        <!--热部署,IDEA中修改完后Ctrl+F9刷新-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>true</scope>
        </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>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!--连接池-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- mysql 数据库驱动. -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--
           spring-boot mybatis依赖:
           请不要使用1.0.0版本,因为还不支持拦截器插件,使用最新版本即可-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!--分页-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.0</version>
        </dependency>
     <build>
   <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,可能devtools不会起作用,即应用不会restart热部署 -->
<fork>true</fork>
<!-- spring-boot:run 中文乱码解决 -->
<!--增加jvm参数-->
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
</configuration>
 </plugin>
  </plugins>
  </build>

  在spring中需要配置spring.xml,在springboot中使用YAML(常用)或者properties代替

  在resources中新建application.yml文件,配置视图解释器,数据库DataSource连接池,设置编码格式端口号,mybatis扫描路径

spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  http:
    encoding:
      charset: UTF-8
      enabled: true
      force: true
  messages:
    encoding: UTF-8
  datasource:
    url: jdbc:mysql://localhost:3306/ssm
    username: root
    password: sc259
    driver-class-name: com.mysql.jdbc.Driver
server:
  tomcat:
    uri-encoding: utf-8
  port: 8080
mybatis:
type-aliases-package: cn.cyf.myspringboot.domain,cn.cyf.myspringboot.query

  若使用properties配置使用如下格式

#视图配置
spring.mvc.view.prefix=/WEB-INF/jsps/
spring.mvc.view.suffix=.jsp
#tomcat的编码配置
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

  搭建结构domain,mapper,query,service,controller

  新建启动类,放在与domain,service文件夹并列(配置扫描路径)

  这样配置会导致war包有问题之后处理:

@SpringBootApplication//标识为springboot的一个应用
@MapperScan("cn.cyf.myspringboot.mapper")
public class SpringbootJspApplication{

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

3.测试

  测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootJspApplication.class) //这事一个Spring测试,要告诉它在哪儿加载Spring配置文件,其实告诉它应用类型就ok
public class test {
    @Autowired
    private Usercontroller h;
    @Test
    public void  test1()throws Exception{
        User user = h.get(1);
        System.out.println(user);
    }
}

  结果:报错提示找不到Mapper中的get方法。

  解决:经检查发现我resources中mapper.xml的路径与mapper.java的路径不一样,而在SpringbootJspApplication中我只配置了扫描mapper.java文件的路径

  方案一:将resources中mapper.xml的路径改为和mapper.java的路径一直

  方案二:在application.yml的mybatis下添加一行代码

mybatis:
  type-aliases-package: cn.cyf.myspringboot.domain,cn.cyf.myspringboot.query
  mapper-locations: classpath:mapper/*.xml

  方案三:在SpringbootJspApplication中配置多个路径@MapperScan({"cn.cyf.myspringboot.mapper","mapper"})

  分页测试:

  UserService

    public List<User> getpage(int i){
        PageHelper.startPage(2,2);
        return userMapper.getpage(i);
    };

  结果:查询了所有数据,分页无效

  解决:查看之前的spring+mybatis项目发现引入过bean

  

  新建一个java工具类,注入bean

@Configuration
public class MyBatisConfiguration {
    @Bean
    public PageHelper pageHelper() {
        System.out.println("MyBatisConfiguration.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;
    }
}

  web测试:

  启动Tomcat,在springboot中不需要配置Tomcat,直接使用SpringbootJspApplication中的main方法就可以启动

  在springboot类中中有个@RestController注解相当于@Controller+@ResponseBody

  问题:使用@RestController注解后返回值为String的方法应该跳转一个string路径的页面,结果却在前台打印string

  解决:返回值用Model或者ModelandView代替

4.事务

  SpringBoot:注解式事务
       所有配置springboot都已经实现了,只需打注解即可。

 

@Service
@Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
public class UserService {
    @Autowired
    private UserMapper userMapper;
    @Transactional
    public void save(User u){
        userMapper.save(u);
//        int i=1/0;
    };
}

 

5.jar运行和war部署

  开发的时候在idea中直接main方法启动,实际使用时需要打包成jar和war

  jar打包:

  在pom路径下,运行cmd==>mvn clean package

  打包到你这个项目的target目录

  运行cmd==>java -jar xxx.jar

  解决方案一:配置maven插件

<plugin>
    <!--springboot的maven插件-->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.4.1.RELEASE</version>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

  方案二:不配置的打包命令:mvn clean package spring-boot:repackage -e -DskipTests

  成功后出现2个文件

  war打包:

  按照打jar包的方法陈功厚将war包放入Tomcat的webapps中启动Tomcat成功,却无法访问路径

  解决方法:

  修改main入口方法的代码

@SpringBootApplication
@MapperScan("cn.cyf.myspringboot.mapper")
public class SpringbootJspApplication  extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootJspApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(SpringbootJspApplication.class,args);
    }
}

  除此以外还需要设置web.xml,否则el表达式无效:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">
  <display-name>Archetype Created Web Application</display-name>
  <jsp-config>
    <jsp-property-group>
      <url-pattern>
      </url-pattern>
      <!--不忽略el表示式-->
      <el-ignored>false</el-ignored>
    </jsp-property-group>
  </jsp-config>
</web-app>

6.Spring Profiles多环境支持

  作用:开发测试不同的环境能够使用的方法不同

  

  

  在配置文件中指定 spring.profiles.active=dev
  命令行:java -jar -Dspring.profiles.active=dev xxx.jar

 7.自定义YAML

  在application.yml中添加

#自定义
cyf:
  name: 嘻嘻

  在其他地方定义并赋值

    @Value("${cyf.name}")
    private String name;

  

转载于:https://www.cnblogs.com/haonan-cyf/p/10396319.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值