Spring的註解開發
Spring的註解開發分為兩種,一種是部分使用註解,仍然保留配置檔案的原始註解;另一種是完全使用註解配置的新註解;
原始註解
主要是替代 自定義Bean的xml配置,和Hibernate的原始註解一樣,我們還得告訴配置檔案,我們使用註解配置了哪些檔案
使用註解,得配置context名稱空間和約束路徑
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<!--配置context名稱空間-->
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
<!--配置context的約束路徑-->
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置包掃描 目的:告知spring容器 哪個包下的類使用了註解配置
base-package:基本包 Spring可以掃描該包及其後代包
-->
<context:component-scan base-package="com.cuixiaoming"></context:component-scan>
</beans>
下面是使用的註解
//這四個物件的使用方法完全一樣,下面三個是第一個的語義化註解
@Component:例項化物件 (重點)
//用在類定義上,裡面是以前bean標籤中的id如 @Component("userService")
@Controller:用於例項化web層的實體 (重點)
@Service:用於例項化service層的實體 (重點)
@Repository:用於例項化dao層的實體 Repository:直譯是倉庫的意思 (重點)
//物件注入,配置在
@Autowired:注入物件 注意:單獨使用它是按照型別注入的 (重點)
@Qualifier(id值) :使用@Autowired+@Qualifier 是按照指定的id名稱進行注入
@Resource(name="id的值") 相當於@Autowired+@Qualifier
//字串注入
@Value(字串)
@Value("${spring容器中key}") (重點)
//
@Scope("singleton/prototype") (重點)
@PostConstruct
@PreDestroy
如果非自定義實體 不能使用上述原始註解進行例項化的配置
新註解
新註解是把xml配置檔案換成了實體配置類
新註解常用的標籤如下
@Configuration : 標註該實體是一個配置類
@ComponentScan : 用於掃描包 ---->@ComponentScan(basePackages = {"com.cuixiaoming"})
@Bean : 將@Bean修飾的方法的返回值 以指定的名稱儲存到spring容器中---->@Bean(name="dataSource")
@PropertySource : 載入properties檔案 ---->@PropertySource("classpath:jdbc.properties")
@Import : 引入其他配置實體 ---->@Import({DataSourceConfiguration.class})
裡面把我測試的例子貼上來
主配置例項
package com.cuixiaoming.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
//將配置xml換成一個配置的實體類
//宣告這是一個配置實體類
@Configuration
//配置包掃描路徑
@ComponentScan(basePackages = {"com.cuixiaoming"})
@Import({DataSourceConfiguration.class})//引入的是其他配置實體的位元組碼物件
public class SpringConfiguration {
}
//配置佔位符配置器(在Spring4.3版本以下,都需要手動配置配置器物件,在所有配置物件中,只要其中一個配置了就可以了)
用來資料來源配置的配置例項
package com.cuixiaoming.config;
import com.mchange.v2.c3p0.ComboPooledDataSource;
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;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
@Configuration
//將properties中資料載入進spring容器中
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {
//將容器的資料封裝起來
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String passworld;
//將該方法的返回值以指定的名稱儲存到spring容器中
@Bean(name="dataSource")
public DataSource getDataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(username);
dataSource.setPassword(passworld);
return dataSource;
}
//配置佔位符配置器(在Spring4.3版本以下,都需要手動配置配置器物件,在所有配置物件中,只要其中一個配置了就可以了)
@Bean
public static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer(){
return new PropertySourcesPlaceholderConfigurer();
}
}
- 配置佔位符配置器(在Spring4.3版本以下,都需要手動配置配置器物件,在所有配置物件中,只要其中一個配置了就可以了)
@Bean
public static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer(){
return new PropertySourcesPlaceholderConfigurer();
}
相關文章
- spring註解開發Spring
- Spring 註解開發Spring
- 【Spring註解驅動開發】聊聊Spring註解驅動開發那些事兒!Spring
- Spring註解開發_Spring容器建立概述Spring
- Spring7——開發基於註解形式的springSpring
- spring註解開發(一)Bean注入SpringBean
- Spring Boot開發(Gradle+註解)Spring BootGradle
- Spring-05 使用註解開發Spring
- 你的開發利器Spring自定義註解Spring
- 【Spring註解驅動開發】使用@Scope註解設定元件的作用域Spring元件
- Spring學習之05使用註解開發Spring
- 【Spring註解驅動開發】使用@Lazy註解實現懶載入Spring
- 【Spring註解驅動開發】自定義TypeFilter指定@ComponentScan註解的過濾規則SpringFilter
- Spring第9天Aop簡介,Aopxml開發,Aop註解開發SpringXML
- 【Spring註解驅動開發】在@Import註解中使用ImportBeanDefinitionRegistrar向容器中註冊beanSpringImportBean
- 【Spring註解驅動開發】二狗子讓我給他講講@EnableAspectJAutoProxy註解Spring
- 【Spring註解驅動開發】在@Import註解中使用ImportSelector介面匯入beanSpringImportBean
- 【Spring註解開發】元件註冊-使用@Configuration和@Bean給容器中註冊元件Spring元件Bean
- 註解開發
- 淺嘗Spring註解開發_Servlet3.0與SpringMVCServletSpringMVC
- Spring註解Spring
- 【Spring註解驅動開發】使用@Import註解給容器中快速匯入一個元件SpringImport元件
- Sping註解開發
- 使用註解開發
- 【Spring註解】事務註解@TransactionalSpring
- Spring AOP的AspectJ註解Spring
- Spring中重要的註解Spring
- Spring的@PropertySource註解使用Spring
- SPRING-spring註解整理Spring
- Spring boot註解Spring Boot
- Spring : @SessionAttributes註解SpringSession
- Spring新註解Spring
- Spring註解大全Spring
- Spring常用註解Spring
- 【Spring註解驅動開發】你還不會使用@Resource和@Inject註解?那你就out了!!Spring
- 【Spring註解驅動開發】BeanPostProcessor在Spring底層是如何使用的?看完這篇我懂了!!SpringBean
- spring通過註解註冊bean的方式+spring生命週期SpringBean
- Spring管理的@Configuration註解使用Spring