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;
}
}