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注解:

原文地址:https://www.cnblogs.com/tangge/p/9607939.html