IOC注解
首先需要在配置文件中引入context的约束约束如下
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here -->
</beans>
然后在配置文件中开启注解扫描
<context:component-scan base-package="com.hw.learn1"/>
下面就可以使用注解了
@Component(value="userService")
@Component
是作用在类上的
此注解相当于如下配置
<bean id="userService" class="...">
spring还提供了一些其它的衍生注解,作用和@Component
@Controller
作用在Web层
@Service
作用在业务层
@Repository
作用在持久层
spring提供的Bean的作用范围注解@Scope(value="prototype")
这个注解有两个取值singleton和prototype分别表示单例和多例
spring提供的Bean生命周期的注解是@PostConstruct
和@PreDestroy
分别表示bean的初始化和销毁
DI注解
@value
普通类型的注入
@Autowired
按类型进行自动装配,如果需要名字自动装配,需要添加另一个注解@Qualifier
Java提供了一个注解@Resource
在spring中给了支持,这个注解相当于@Autowired
和@Qualifier
一起使用,而且这个注解只有name属性,没有value属性
Spring整合JUnit
首先引入整合需要的包spring-test
然后在测试类中添加测试注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
aop的注解方式
首先引入相关依赖
然后,编写配置文件文件
<!--开启注解扫描-->
<context:component-scan base-package="com.hw.learn1"/>
<!--开启aop自动代理-->
<aop:aspectj-autoproxy/>
编写需要代理的类
@Component("userService")
public class UserServiceImpl implements UserService{
public void save() {
System.out.println("保存用户");
}
public void update() {
System.out.println("修改用户");
}
public void select() {
System.out.println("查询数据");
}
}
编写切面类
@Component(value = "myAspect")
//定义切面类
@Aspect
public class MyAspect {
/*声明通知类型
* @Before -- 前置通知
* @AfterReturing -- 后置通知
* @Around -- 环绕通知
* @After -- 最终通知
* @AfterThrowing -- 异常抛出通知
* */
//@Before("execution(public * *..*.UserServiceImpl.save(..))")
@Before("MyAspect.pointcut()")
public void transaction(){
System.out.println("开启事务...");
}
@Pointcut("execution(public * *..*.UserServiceImpl.save(..))")
public void pointcut(){}
}
编写测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AOPTestzj {
@Resource(name = "userService")
private UserService userService;
@Test
public void run(){
userService.save();
userService.update();
}
}