SSM框架---Spring的注解(三)

一、Spring的注解

1、注解的开发步骤

①导包spring-aop.jar
②开启注解扫描器(告诉spring容器应该去哪个目录下解析注解 <context:component-scan base-package="com.ly.spring" />)
③配置注解组件 @Component @Controller  @Service  @Repository
④测试

2、常用注解

  • ① @Component("bean的id值")  

定义在类上,只要注解扫描器一扫描到就会创建该类的实例对象,放到Spring容器里面
Spring发布了公告,不再维护@Component("bean的id值"),转而衍生出三个注解
@Controller("bean的id值")  --web层Controller   
@Service("bean的id值")    --service层 
@Repository("bean的id值") --dao层 

  • ② @Value("属性值")  

定义在属性字段上,相当于在配置文件中配置bean,并且使用setter注入。针对基本类型和String类型(set方法可以省略,使用setter注入)

  • ③ @Autowired

 定义在属性字段上,相当于在配置文件中配置bean,并且使用setter注入。针对对象类型,会自动去Spring容器中找该类型的实例对象并赋值

  • ④ @Qualifier("userService")  

定义在属性字段上,指定使用id名称的实例对象。使用场景:某一个接口类有两个名称相同的实现类,用@Qualifier("userService")指定的id决定使用哪个实现类。但,我们一般不在ssm里面写两个实现类,自己找麻烦。注意:@Qualifier("userService") 要想使用必须结合@Autowired一起使用

  • ⑤ @Resource(name="userService")

定义在属性字段上 =@Autowired+@Qualifier("userService") ,但,一般不使用这个注解,因为它使用范围较窄,不能用于参数的传递

  • ⑥ @Scope("singleton")或@Scope("prototype")  定义在Controller类上,因为控制层可以是多例,service和dao层都是单例模式,不写默认单例
  • ⑦ @PostConstruct   定义在方法上,初始化方法(构造方法之后)
  • ⑧ @PreDestroy   定义在方法上,销毁方法(销毁方法之前)

3、Spring的新注解(全注解方式)

① @Configuration

 定义在类上,表明该类是一个注解类
② @ComponentScan(basePackages="com.ly.spring")  

定义在类上,//等价于注解扫描器 <context:component-scan base-package="com.ly.spring"></context:component-scan>
③ @PropertySource(value = {"classpath:jdbc.properties"})  

定义在类上,//等价于 <context:property-placeholder location="classpath:jdbc.properties"/>
④ @Bean(name="c3p0")  

定义在方法上,等价于<bean id="" class="" />
⑤ @Import(value = {Xxx.class})  

定义在类上 //引入其他config注解类

二、Spring整合Junit做测试

1、普通测试的缺点

①代码复用性大
②配置文件运行一次加载一次

2、Spring整合Junit的开发步骤

①导包  spring-test.jar  spring-aop.jar  junit.jar
②要告诉spring谁加载配置文件 @RunWith(value=SpringJUnit4ClassRunner.class)
③要告诉spring配置文件的地址 @ContextConfiguration(value="classpath:applicationContext.xml")
④分层测试(junit正常测试)

3、测试类

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.ly.spring.dao.UserDao;
import com.ly.spring.service.UserService;

/*1:告诉spring配置文件在哪个地方*/
@ContextConfiguration(value="classpath:applicationContext.xml")
/*2:告诉spring谁加载配置文件*/
@RunWith(value =SpringJUnit4ClassRunner.class)
public class SpringJunit {

	@Autowired
	private UserService userSerive;
	@Autowired
	private UserDao userDao;
	
	@Test
	public void test1(){
		userSerive.save();
	}
}

三、Spring整合连接池

1、C3P0

①导包

②配置

<!-- 让spring能够加载jdbc.properties文件 -->	
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- C3P0 -->
<bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="driverClass" value="${jdbc.driver}"></property>
	<property name="jdbcUrl" value="${jdbc.url}"></property>
	<property name="user" value="${jdbc.username}"></property>
	<property name="password" value="${jdbc.password}"></property>
</bean>

③测试

@Test //spring的ioc+di替代以上硬编码的方式
public void  test3() throws SQLException{
	ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
	DataSource ds =(DataSource)context.getBean("c3p0");
	Connection con = ds.getConnection();
	System.out.println(con);
}

2、DBCP

①导包commons-dbcp.jar和commons-pool.jar

②配置

<!-- 让spring能够加载jdbc.properties文件 -->	
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- DBCP -->
<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource">
	<property name="driverClassName" value="${jdbc.driver}"></property>
	<property name="url" value="${jdbc.url}"></property>
	<property name="username" value="${jdbc.username}"></property>
	<property name="password" value="${jdbc.password}"></property>
</bean>

③测试

@Test //spring的ioc+di替代以上硬编码的方式
public void  test4() throws SQLException{
	ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
	DataSource ds =(DataSource)context.getBean("dbcp");
	Connection con = ds.getConnection();
	System.out.println(con);
}

连接池的使用都还需添加一个驱动包,如:oracle的ojdbc6.jar,mysql的mysql-connector-java-5.1.7-bin.jar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值