SpringBoot入门

一、JavaConfig

(一) IoC 和 DI

1、XML配置IoC

① 创建一个类:SomeBean.class
② 编写项目里配置:01ior.xml ==> <bean id = "someBean" class = "...">
③ 启动Spring

ApplicationContext ctx = new ClassPathXmlApplicationContext("calsspath:01oir.xml");
ctx.getBean("someBean",someBean.class);

2、JavaConfig配置IoC

① 创建一个配置类

@Configuration
public class JavaConfig{
	@Bean
	public class someBean(){
		return new someBean();
	}
}

② 启动Spring

ApplicationContext ctx = new AnnotationConfigurationApplicationContext(JavaConfig.class);
ctx.getBean("someBean",someBean.class);

3、注解简化配置

@Component   @Autowired 
@Configuration :表示该类是 Spring 的配置类;
@ComponentScan :开启组件扫描器;

补充

 @Scope("prototype") :多例;
② @Bean中的属性:name:bean中name,取别名;
                                   initMethod:初始化方法;
                                   destroyMethod:销毁方法;

(二)SpringTest加载配置类

1、JUnit4

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(①/②) ①XML:“classpath:xml文件路径”; ②配置类:classes = {配置类1.class,配置类2.class,......}

2、JUnit5

@SpringJUnitConfig(配置类.class):测试方法不用 public 修饰;

(三)配置类的导入

1、XML方式:<import resource = "classpath:applicationContext.xml" />
2、配置类方式:

主配置类:
    @Configuration
    @Import(OtherJavaConfig.class) // 在主配置类中关联次配置类
    public calss JavaConfig(){...}
次配置类:
	@Configuration
	public calss OtherJavaConfig(){...}
测试:
    @SpringJUnitConfig(classes = JavaConfig.class)
    public class IoCTest(){...}

二、SpringBoot入门

(一)项目创建

1、SpringBoot 工程

创建好会自动生成一个启动类和测试类@SpringbootApplication     @SpringBootTest

2、Maven --> SpringBoot

① 添加依赖

<packaging>jar</packaging>
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.3.RELEASE</version>
</parent>
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

② 编写 Controller 代码
③ 编写启动程序

(二)入门案例分析

1、父子工程

<dependencyManagement> <pluginManagement> 约定好版本号 父:<packaging>pom</packaging>

2、Spring-Boot-Starter

可以直接使用,免去了各种配置,回内嵌很多包,依赖(传递性)

spring-boot-starter:核心启动器,提供了自动配置,日志和 YAML 配置支持。
spring-boot-starter-aop:支持使用 Spring AOP 和 AspectJ 进行切面编程。
spring-boot-starter-test:支持使用 JUnit ,测试 Spring Boot 应用。
spring-boot-starter-web:支持使用 Spring MVC 构建 Web 应用,包括 RESTful 应用,使用
                                        Tomcat 作为默认的嵌入式容器。
spring-boot-starter-logging:提供了对日志的支持,默认使用 Logback。

3、打包独立运行

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

使用 maven 的 package 命令进行打包;
使用命令 java -jar xxx.jar 运行 jar 包(--server.port=80)。

(三)参数配置

application.properties / application.yml 习惯放在 resource 文件夹下面

1、自定义properties 文件

SpringBoot 不会去解析 : db.properties ===> jdbc.username = root JavaConfig 配置:

@Configuration
@PropertySource("calsspath:db.properties")
public class JavaConfig{
    @Value("${jdbc.username}")
    private String username;
    @Bean
    public MyDataSource myData(){...}
}

2、配置在application.properties

会自动解析

3、优化@Value过长

把前缀编写到 @ConfigurationProperties 属性上,且设置类属性与需要绑定的参数名相同,可实现自动绑定,但是注意,若使用测试类加载贴有@Configuration 的配置类,则需要在配置类添@EnableConfigurationProperties 注解;若是使用测试类加载贴有 @SpringBootApplication 的配置类,则不需要。

@Component
@ConfigurationProperties(prefix="jdbc")
public class MyDataSource {
    private String username;
}

4、Environment 对象绑定对象

当要绑定的参数过多时,直接在配置类中注入 Spring 的 Environment 对象, 这样就不需要贴上在字段或者形参上太多的 @Value 注解,相对比较简洁。

三、自动装配原理

1- @SpringBootApplication :注解内部是3大注解功能的集成
2- @ComponentScan :开启组件扫描
3- @SpringBootConfiguration :作用等同于 @Configuration 注解, 也是用于标记配置类@EnableAutoConfiguration :内部导入 AutoConfigurationImportSelector,该类中有个getCandidateConfigurations 方法,读取 jar 包中 META-INF/spring.factories 文件中配置类,再根据条件进行加载和配置,比如:AOP,PropertyPlaceholder,FreeMarker,HttpMessageConverter,Jackson,DataSourceDataSourceTransactionManager,DispatcherServlet,WebMvc 等等

SpringApplication.run(..)的作用

  • 启动 Spring Boot 应用

  • 加载自定义的配置类,完成自动配置功能

  • 把当前项目配置到嵌入的 Tomcat 服务器

  • 启动嵌入的 Tomcat 服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值