1、@Autowired 自动装配
1)不使用该注解
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="cat" class="com.hu.pojo.Cat"/>
<bean id="dog" class="com.hu.pojo.Dog"/>
<bean id="people" class="com.hu.pojo.People">
<property name="name" value="老大"/>
<property name="cat1" ref="cat"/>
<property name="dog1" ref="dog"/>
</bean>
</beans>
2)使用该注解,同时可以不需要set方法
<?xml version="1.0" encoding="UTF-8"?>
<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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<bean id="cat" class="com.hu.pojo.Cat"/>
<bean id="dog" class="com.hu.pojo.Dog"/>
<bean id="people" class="com.hu.pojo.People"/>
<context:annotation-config/>
</beans>
2、@Nullable
作用:让这个字段可以为空
3、@Qualifier
当有多个复杂bean时,可以通过@Qualifier指定你要使用的那一个
4、 @Resource
@Resource 同样可以实现自动装配
这个注解是java的注解
而上述的注解是spring的
5、 @Component(组件)
这个注解的作用等价于<bean id="user" class="com.hu.pojo.User"/>
//使用时默认是类名的小写
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = context.getBean("user", User.class);
System.out.println(user.name);
}
6、 @Value
//给属性赋值
7、@Component衍生注解
pojo层 -------> @Component
dao层 -------> @Repository
service层 -------> @Service
controller层 -------> @Controller
//这四个注解都导入于
//import org.springframework.stereotype
//都是将一个类加入到spring容器中
8、@Scope()
作用:设置单列或双列模式
9、使用注解
<!--
配置文件中加入
扫描包下注解
-->
<context:component-scan base-package="com.hu"/>
<context:annotation-config/>
10、Aop使用注解
@Aspect
public class Annon {
@Before("execution(* com.hu.service.UserServiceImpl.*(..))")
public void before(){
System.out.println("方法执行前");
}
@After("execution(* com.hu.service.UserServiceImpl.*(..))")
public void after(){
System.out.println("方法执行后");
}
@Around("execution(* com.hu.service.UserServiceImpl.*(..))")
public void around(ProceedingJoinPoint pr) throws Throwable {
System.out.println("环绕前");
Object proceed = pr.proceed();
System.out.println("环绕后");
}
}
//在配置文件开启注解支持
//<aop:aspectj-autoproxy/>
未使用注解
在配置文件中配置
<bean id="diy" class="com.hu.diy.Diy"/>
<aop:config>
<aop:aspect ref="diy">
<aop:pointcut id="point" expression="execution(* com.hu.service.UserServiceImpl.*(..))"/>
<aop:before method="before" pointcut-ref="point"/>
<aop:after method="after" pointcut-ref="point"/>
</aop:aspect>
</aop:config>