springboot快速使用 1.编写SpringConfig 用于实例化Spring容器 2.读取外部文件 3.Springboot 快速入门 4.Spring Boot的核心 5.Spring Boot的自动配置的原理 6. Spring Boot的web开发 7.设置事务管理

@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 
		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
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

4.Spring Boot的核心

4.1 入口类和@SpringBootApplication

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

@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解:
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理
该注解主要组合了以下注解:

  1. @SpringBootConfiguration:这是Spring Boot项目的配置注解,这也是一个组合注解:
    springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理
    在Spring Boot项目中推荐使用@ SpringBootConfiguration替代@Configuration
  2. @EnableAutoConfiguration:启用自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置项目的配置项:
    a) 如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC
    springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理
  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

springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

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

4.4.XML配置文件

springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

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容器。
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

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的自动配置。
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

5.5. 条件注解

springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

6. Spring Boot的web开发

springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

6.1. 自动配置的ViewResolver

视图的配置mvcProperties对象中:
org.springframework.boot.autoconfigure.web.WebMvcProperties.View
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

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目录中即可通过地址访问:
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理

7.设置事务管理

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

首先需要导入依赖:

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

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

在Service中添加@Transactional注解:
springboot快速使用
1.编写SpringConfig 用于实例化Spring容器
2.读取外部文件
3.Springboot 快速入门
4.Spring Boot的核心
5.Spring Boot的自动配置的原理
6. Spring Boot的web开发
7.设置事务管理