1、創建對象的注解
含義:使用注解的形式創建對象,交給Spring容器管理(需要配置在類上)
@Component:組件
@Controller:web層
@Service:service層
@Repository:Dao層
?? 默認:創建對象的唯一標識,當前類名首字母小寫
?? value屬性:指定創建對象的唯一標識
舉例:
//1、使用@Component創建對象,唯一標識為:account。以下兩種任選其一,其中value可以指定唯一標識。
//@Component
@Component(value="account")
public class Account{}
//2、使用@Controller創建對象,唯一標識為:account。以下兩種任選其一,其中value可以指定唯一標識。
//@Controller
@Controller(value="account")
public class Account{}
//3、使用@Service創建對象,唯一標識為:accountServiceImpl。以下兩種任選其一,其中value可以指定唯一標識。
//@Service
@Service(value="accountServiceImpl")
public class AccountServiceImpl{}
//4、使用@Repository創建對象,唯一標識為:accountDaoImpl。以下兩種任選其一,其中value可以指定唯一標識。
//@Repository
@Repository(value="accountDaoImpl")
public class AccountDaoImpl{}
2、依賴注入的注解(可以理解為注入類中的屬性)
@AutoWired:
?? 默認:
?? ?1、按照類型(接口)從容器中查找對象,并注入。
?? ?2、按照屬性名作為唯一標識從容器中查找對象,并注入。
舉例:
public class AccountDaoImpl{
?? ?@AutoWired
?? ?private QueryRunner qr;
}
@Qulifier:配合@AutoWired一起使用配置到屬性上
?? ?按照指定的唯一標識從容器中查找對象,并注入
?? ?value:唯一標識
舉例:
public class AccountDaoImpl{
?? ?@AutoWired
?? ?@Qualifier(value="queryRunner2")
?? ?private QueryRunner qr;
}
@Resource:JDK提供的依賴注入的注解(按照指定唯一標識從容器中查找對象,并注入)
?? ?name屬性:唯一標識
舉例:
public class AccountDaoImpl{
?? ?@Resource(name="queryRunner")
?? ?private QueryRunner qr;
}
注意:1、@Resource是JDK提供的注解,且并不是所有的JDK版本都支持
????? 2、@Resource可以完全取代@AutoWired+@Qulifier
@Value:注入被Spring管理的properties文件中的內容
使用properties之前需要在bean.xml中解析
<!-- 解析properties文件 -->
<bean id="propertySource" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
?? ?<!-- set方式注入properties文件的路徑
?? ??? ?location:注入單個properties路徑
?? ??? ?locations:注入多個properties路徑
?? ?-->
?? ?<!-- <properties name="location" classpath="jdbc.properties"></properties> -->
?? ?<property name="locations">
?? ??? ?<array>
?? ??? ??? ?<value>classpath:jdbc.properties</value>
?? ??? ?</array>
?? ?</property>
</bean>
3、聲明周期相關的注解
@Scope:指定創建對象的作用域(作用范圍)
?? value:singleton:默認,單例 || prototype:多例
@PostConstruct:指定初始化方法(對象創建之后立即執行的方法)
@PreDestory:指定銷毀方法(僅單例對象有效),容器關閉,對象銷毀執行的方法
舉例
//默認的,可以的不寫
@Repository(value="accountDao")
@Scope("singleton")
public class AccountDao{
?? ?@PostConstruct
?? ?public void init(){
?? ??? ?System.out.println("創建對象之后執行的方法");
?? ?}
?? ?@PreDestory
?? ?public void destory(){
?? ??? ?System.out.println("銷毀之前執行的方法");
?? ?}
}
4、純注解編程
目的:替換xml配置文件
實現:需要將spring的配置信息,配置到類:配置類
@Configruation:聲明配置類
@ComponentScan:指定包掃描
?? ?basePackage:包名
@PropertySource:將properties配置文件交給speing容器管理
?? ?value:接受String類型數據(配置多個文件)
舉例:
//1、聲明配置類
//2、開啟包掃描
//3、將propertirs文件交給spring容器管理
@Configuration
@ComponentScan(basePackage="cn.wzq")
@PropertySource(value="classpath:jdbc.properties")
public class SpringConfig{}
@Bean:配置到方法上,表明此方法的返回值交給sring容器管理
舉例:
pubic class JdbcConfig{
?? ?@Bean(name="dataSource")
?? ?public DataSource getDataSource(){
?? ??? ?ComboPooledDataSource ds=new ComboPooledDataSource();
?? ??? ?ds.setUser("root");
?? ??? ?ds.setPassword("root");
?? ??? ?ds.setJdbcUel("jdbc:mysql:///speingdb");
?? ??? ?ds.setDriverClass("com.mysql.jdbc.Driver");
?? ??? ?return ds;
?? ?}
?? ?@Bean(name="queryRunner")
?? ?public QueryRunner getQueryRunner(DataSource dataSource){
?? ??? ?QueryRunner qr=new QueryRunner(dataSource);
?? ??? ?return qr;
?? ?}
}
含義:使用注解的形式創建對象,交給Spring容器管理(需要配置在類上)
@Component:組件
@Controller:web層
@Service:service層
@Repository:Dao層
?? 默認:創建對象的唯一標識,當前類名首字母小寫
?? value屬性:指定創建對象的唯一標識
舉例:
//1、使用@Component創建對象,唯一標識為:account。以下兩種任選其一,其中value可以指定唯一標識。
//@Component
@Component(value="account")
public class Account{}
//2、使用@Controller創建對象,唯一標識為:account。以下兩種任選其一,其中value可以指定唯一標識。
//@Controller
@Controller(value="account")
public class Account{}
//3、使用@Service創建對象,唯一標識為:accountServiceImpl。以下兩種任選其一,其中value可以指定唯一標識。
//@Service
@Service(value="accountServiceImpl")
public class AccountServiceImpl{}
//4、使用@Repository創建對象,唯一標識為:accountDaoImpl。以下兩種任選其一,其中value可以指定唯一標識。
//@Repository
@Repository(value="accountDaoImpl")
public class AccountDaoImpl{}
2、依賴注入的注解(可以理解為注入類中的屬性)
@AutoWired:
?? 默認:
?? ?1、按照類型(接口)從容器中查找對象,并注入。
?? ?2、按照屬性名作為唯一標識從容器中查找對象,并注入。
舉例:
public class AccountDaoImpl{
?? ?@AutoWired
?? ?private QueryRunner qr;
}
@Qulifier:配合@AutoWired一起使用配置到屬性上
?? ?按照指定的唯一標識從容器中查找對象,并注入
?? ?value:唯一標識
舉例:
public class AccountDaoImpl{
?? ?@AutoWired
?? ?@Qualifier(value="queryRunner2")
?? ?private QueryRunner qr;
}
@Resource:JDK提供的依賴注入的注解(按照指定唯一標識從容器中查找對象,并注入)
?? ?name屬性:唯一標識
舉例:
public class AccountDaoImpl{
?? ?@Resource(name="queryRunner")
?? ?private QueryRunner qr;
}
注意:1、@Resource是JDK提供的注解,且并不是所有的JDK版本都支持
????? 2、@Resource可以完全取代@AutoWired+@Qulifier
@Value:注入被Spring管理的properties文件中的內容
使用properties之前需要在bean.xml中解析
<!-- 解析properties文件 -->
<bean id="propertySource" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
?? ?<!-- set方式注入properties文件的路徑
?? ??? ?location:注入單個properties路徑
?? ??? ?locations:注入多個properties路徑
?? ?-->
?? ?<!-- <properties name="location" classpath="jdbc.properties"></properties> -->
?? ?<property name="locations">
?? ??? ?<array>
?? ??? ??? ?<value>classpath:jdbc.properties</value>
?? ??? ?</array>
?? ?</property>
</bean>
3、聲明周期相關的注解
@Scope:指定創建對象的作用域(作用范圍)
?? value:singleton:默認,單例 || prototype:多例
@PostConstruct:指定初始化方法(對象創建之后立即執行的方法)
@PreDestory:指定銷毀方法(僅單例對象有效),容器關閉,對象銷毀執行的方法
舉例
//默認的,可以的不寫
@Repository(value="accountDao")
@Scope("singleton")
public class AccountDao{
?? ?@PostConstruct
?? ?public void init(){
?? ??? ?System.out.println("創建對象之后執行的方法");
?? ?}
?? ?@PreDestory
?? ?public void destory(){
?? ??? ?System.out.println("銷毀之前執行的方法");
?? ?}
}
4、純注解編程
目的:替換xml配置文件
實現:需要將spring的配置信息,配置到類:配置類
@Configruation:聲明配置類
@ComponentScan:指定包掃描
?? ?basePackage:包名
@PropertySource:將properties配置文件交給speing容器管理
?? ?value:接受String類型數據(配置多個文件)
舉例:
//1、聲明配置類
//2、開啟包掃描
//3、將propertirs文件交給spring容器管理
@Configuration
@ComponentScan(basePackage="cn.wzq")
@PropertySource(value="classpath:jdbc.properties")
public class SpringConfig{}
@Bean:配置到方法上,表明此方法的返回值交給sring容器管理
舉例:
pubic class JdbcConfig{
?? ?@Bean(name="dataSource")
?? ?public DataSource getDataSource(){
?? ??? ?ComboPooledDataSource ds=new ComboPooledDataSource();
?? ??? ?ds.setUser("root");
?? ??? ?ds.setPassword("root");
?? ??? ?ds.setJdbcUel("jdbc:mysql:///speingdb");
?? ??? ?ds.setDriverClass("com.mysql.jdbc.Driver");
?? ??? ?return ds;
?? ?}
?? ?@Bean(name="queryRunner")
?? ?public QueryRunner getQueryRunner(DataSource dataSource){
?? ??? ?QueryRunner qr=new QueryRunner(dataSource);
?? ??? ?return qr;
?? ?}
}