zoukankan      html  css  js  c++  java
  • springboot快速使用

    1.编写SpringConfig 用于实例化Spring容器

    @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>

    @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    @ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //配置扫描包
    public class SpringConfig {
        
        @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
        public UserDAO getUserDAO(){
            return new UserDAO(); // 直接new对象做演示
        }
    }
    

    2.读取外部文件

    通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法:

    @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    @ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //配置扫描包
    @PropertySource(value= {"classpath:jdbc.properties"})
    public class SpringConfig {
        
        @Value("${jdbc.url}")
        private String jdbcUrl;
        
        @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
        public UserDAO getUserDAO(){
            return new UserDAO(); // 直接new对象做演示
        }
        
    }
    

    Spring 引用外部文件

    <!--引用外部文件db.properties-->
      <context:property-placeholder location="classpath:db.properties"/>
    

    1、 如何配置多个配置文件?

    @PropertySource(value= {"classpath:jdbc.properties","xxx"})
    

    2、 如果配置的配置文件不存在会怎么样?

    @PropertySource(value= {"classpath:jdbc.properties"},ignoreResourceNotFound = true)
    

    之前的spring.xml

    	 <!-- 定义数据源 -->
    	<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
    		destroy-method="close">
    		<!-- 数据库驱动 -->
    		<property name="driverClass" value="${jdbc.driverClassName}" />
    		<!-- 相应驱动的jdbcUrl -->
    		<property name="jdbcUrl" value="${jdbc.url}" />
    		<!-- 数据库的用户名 -->
    		<property name="username" value="${jdbc.username}" />
    		<!-- 数据库的密码 -->
    		<property name="password" value="${jdbc.password}" />
    		<!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->
    		<property name="idleConnectionTestPeriod" value="60" />
    		<!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->
    		<property name="idleMaxAge" value="30" />
    		<!-- 每个分区最大的连接数 -->
    		<!-- 
    			判断依据:请求并发数
    		 -->
    		<property name="maxConnectionsPerPartition" value="100" />
    		<!-- 每个分区最小的连接数 -->
    		<property name="minConnectionsPerPartition" value="5" />
    	</bean>
    

    参考xml配置改造成java配置方式:

    @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    @ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //配置扫描包
    @PropertySource(value= {"classpath:db.properties"},ignoreResourceNotFound = true)
    public class SpringConfig {
        @Value("${jdbc.url}")
        private String jdbcUrl;
        @Value("${jdbc.driverClassName}")
        private String jdbcDriverClassName;
    
        @Value("${jdbc.username}")
        private String jdbcUsername;
    
        @Value("${jdbc.password}")
        private String jdbcPassword;
    
    
        @Bean(destroyMethod = "close")
        public BoneCPDataSource boneCPDataSource(){
            BoneCPDataSource  boneCPDataSource = new BoneCPDataSource();
            boneCPDataSource.setJdbcUrl(jdbcUrl);
            boneCPDataSource.setDriverClass(jdbcDriverClassName);
            boneCPDataSource.setUsername(jdbcUsername);
            boneCPDataSource.setPassword(jdbcPassword);
            return boneCPDataSource;
        }
    
        @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
        public UserDAO getUserDAO(){
            return new UserDAO(); // 直接new对象做演示
        }
    
    }
    

    3.Springboot 快速入门

    3.1 设置spring boot的parent

    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>1.5.6.RELEASE</version>
    </parent>
    

    说明:Spring boot的项目必须要将parent设置为spring boot的parent,该parent包含了大量默认的配置,大大简化了我们的开发。

    3.2 导入spring boot的web支持

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

    3.3 导入spring boot的插件

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

    3.4 编写第一个Spring Boot的应用

    @Controller
    @SpringBootApplication
    @Configuration
    public class HelloApplication {
        
        @RequestMapping("hello")
        @ResponseBody
        public String hello(){
            return "hello world!";
        }
        
        public static void main(String[] args) {
            SpringApplication.run(HelloApplication.class, args);
        }
    
    }
    

    代码说明:
    1、@SpringBootApplication:Spring Boot项目的核心注解,主要目的是开启自动配置。
    2、@Configuration:这是一个配置Spring的配置类;
    3、@Controller:标明这是一个SpringMVC的Controller控制器;
    4、main方法:在main方法中启动一个应用,即:这个应用的入口;

    3.5 启动应用.

    第一种:
    在Spring Boot项目中,启动的方式有两种,一种是直接run Java Application另外一种是通过Spring Boot的Maven插件运行。
    第二种:
    maven插件
    spring-boot:run

    4.Spring Boot的核心

    4.1 入口类和@SpringBootApplication

    Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。

    @SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解:

    该注解主要组合了以下注解:

    1. @SpringBootConfiguration:这是Spring Boot项目的配置注解,这也是一个组合注解:

      在Spring Boot项目中推荐使用@ SpringBootConfiguration替代@Configuration
    2. @EnableAutoConfiguration:启用自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置项目的配置项:
      a) 如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC
    3. @ComponentScan:默认扫描@SpringBootApplication所在类的同级目录以及它的子目录。

    4.2 关闭自动配置

    通过上述,我们得知,Spring Boot会根据项目中的jar包依赖,自动做出配置,Spring Boot支持的自动配置如下(非常多):
    比如:我们不想自动配置Redis,想手动配置。

    @SpringBootApplication(exclude = {RedisAutoConfiguration.class})
    

    4.3.修改全局配置

    Spring Boot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下。
    1、 修改tomcat的端口为8088

    server.port=8088
    

    2、修改进入DispatcherServlet的规则为:*.html

    server.port=8088
    server.servlet-path=*.html
    

    更多全局配置:
    https://www.cnblogs.com/tangge/p/9609165.htmlI

    4.4.XML配置文件

    4.5.日志

    Spring Boot对各种日志框架都做了支持,我们可以通过配置来修改默认的日志的配置:

    #设置日志级别
    logging.level.org.springframework=DEBUG
    

    格式

    logging.level.*= # Log levels severity mapping. For instance `logging.level.org.springframework=DEBUG`
    

    5.Spring Boot的自动配置的原理

    Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器。

    5.1. Maven下载源码

    通过 dependency:sources 该命令可以下载该项目中所有的依赖的包的源码。

    5.2. 源码分析

    org.springframework.boot.SpringApplication:

    5.3. Spring.factories文件

    5.5. 举例:Redis的自动配置

    从上述的配置中可以看出,org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration是Redis的自动配置。

    5.5. 条件注解

    6. Spring Boot的web开发

    6.1. 自动配置的ViewResolver

    视图的配置mvcProperties对象中:
    org.springframework.boot.autoconfigure.web.WebMvcProperties.View

    6.2 自动配置静态资源

    6.2.1. 进入规则为 /

    如果进入SpringMVC的规则为/时,Spring Boot的默认静态资源的路径为:

    spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
    # classpath:/META-INF/resources/,
    # classpath:/resources/,
    # classpath:/static/,
    # classpath:/public/
    

    6.2.2. 进入规则为*.xxx 或者 不指定静态文件路径时

    5.2.2. 进入规则为*.xxx 或者 不指定静态文件路径时
    将静态资源放置到webapp下的static目录中即可通过地址访问:

    7.设置事务管理

    在Spring Boot中推荐使用@Transactional注解来申明事务。

    首先需要导入依赖:

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

    当引入jdbc依赖之后,Spring Boot会自动默认分别注入DataSourceTransactionManagerJpaTransactionManager,所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。

    在Service中添加@Transactional注解:

  • 相关阅读:
    毕业设计记录——3.5
    毕业设计记录——3.4
    毕业设计记录——3.3
    阿里云申请SSL 配置https
    毕业设计记录——3.2
    毕业设计(2.25-3.1)周工作计划
    远程连接阿里云ecs 服务器Ubuntu 16.04报错 解决
    基于springboot的ajax异步文件上传
    《需求工程-软件建模与分析之读书笔记之四》
    《需求工程-软件建模与分析之读书笔记之三》
  • 原文地址:https://www.cnblogs.com/tangge/p/9607939.html
Copyright © 2011-2022 走看看