五.Spring5 新註解
新的註解有用,爲後面的SpringBoot可以打一個基礎,因爲到SpringBoot的課程, 多了很多註解。這時候,先了解一部分。
5.1 @Configuration
@Configuration主要是用來定義配置類,可用於代替xml配置文件,比如之前設置的beans.xml
5.2 @ComponentScan
該註解默認會掃描該類所在的包下所有的配置類,相當於之前的 context:component-scan
5.3 @Bean
@Bean是一個方法級別上的註解,主要用在@Configuration註解的類裏,也可以用在@Component註解的類裏。如果不寫,則默認的是添加的bean的id爲方法名。
@Bean(value=“id值”)
@Configuration
public class SpringConfig {
@Bean(value = "dog")
public Dog getDog(){
return new Dog("京東狗",6.18);
}
}
5.4 AnnotationConfigApplicationContex
使用AnnotationConfigApplicationContext可以實現基於Java的配置類加載Spring的應用上下文。避免使用application.xml進行配置。相比XML配置,更加便捷。
ApplicationContext ac=new AnnotationConfigApplicationContext(SpringConfig.class);
Dog dog= (Dog) ac.getBean("dog");
System.out.println(dog.toString());
5.5 Import
-
用到的Bean導入到容器
@Import(value = {Dog.class,Cat.class}) //測試類: ApplicationContext ac=new AnnotationConfigApplicationContext(SpringConfig.class); Dog dog= (Dog) ac.getBean(Dog.class); System.out.println(dog.toString());
-
導入另外一個配置類
相當於<import resource=“lasspath:xxx.xml”/>
5.6 PropertySource
註解用於指定資源文件讀取的位置,它不僅能讀取properties文件,也能讀取xml文件,並且通過YAML解析器,配合自定義PropertySourceFactory實現解析YAML文件。
相當於xml文件裏面的:
<context:property-placeholder location="classpath:/hibernate.properties" />
加了:druid的配置類
pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
package com.aaa.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
/**
* Created by 張晨光 on 2020/6/18 9:26
*/
@Configuration
@PropertySource("classpath:/druid.properties")
public class JdbcConfig {
@Value("${driverClassName}")
private String driverClassName;
@Value("${url}")
private String url;
@Value("${username}")
private String username;
@Value("${password}")
private String password;
/*@Override
public String toString() {
return "JdbcConfig{" +
"driverClassName='" + driverClassName + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}*/
//註冊Druid數據源連接池
@Bean
public DruidDataSource druidDataSource(){
// System.out.println("driverClassName====> " + driverClassName);
// System.out.println("url====> " + url);
// System.out.println("username====> " + username);
// System.out.println("username====> " + username);
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
return druidDataSource;
}
}
測試 類:
@org.junit.Test
public void testTwo(){
ApplicationContext ac= new AnnotationConfigApplicationContext(SpringConfig.class);
DruidDataSource druidDataSource= (DruidDataSource) ac.getBean("druidDataSource");
System.out.println(druidDataSource);
}
回顧:
1.建立了兩個配置類:SpringConfig、JdbcConfig
2.第一個配置類主要測試的註解有:@Configuration @ComponentScan @Bean @Import
3.第二個配置類主要測試的註解有:@PropertySrouce,主要再次來測試一下,從外部來獲取配置文件;
4.都用到了AnnotationConfigApplicationContext類。
> " + driverClassName);
// System.out.println("url==> " + url);
// System.out.println("username====> " + username);
// System.out.println("username====> " + username);
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
return druidDataSource;
}
}
測試 類:
```java
@org.junit.Test
public void testTwo(){
ApplicationContext ac= new AnnotationConfigApplicationContext(SpringConfig.class);
DruidDataSource druidDataSource= (DruidDataSource) ac.getBean("druidDataSource");
System.out.println(druidDataSource);
}
回顧:
1.建立了兩個配置類:SpringConfig、JdbcConfig
2.第一個配置類主要測試的註解有:@Configuration @ComponentScan @Bean @Import
3.第二個配置類主要測試的註解有:@PropertySrouce,主要再次來測試一下,從外部來獲取配置文件;
4.都用到了AnnotationConfigApplicationContext類。
如果你不習慣於用註解,那麼可以先使用配置文件來,只要達成效果即可,理解即可。