- 代码里面的一些特殊的标记,使用注解可以完成特定的功能
- 注解写法 @注解名称(属性名称=属性值)
- 注解使用在类上面,方法上面和属性上面
能够替代配置文件 但是不能完全替代
- 注解开发准备
- 导入jar包 spring最基本的jar包
- 导入aop的jar包
- 创建类,创建方法
- 创建spring配置文件,引入约束
<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.ljy"></context:component-scan>
<!-- 扫描属性上面的注解 -->
<context:annotation-config></context:annotation-config>
-- 注解创建对象
在类上加注解
@Component(value="user") //相当于<bean id="user" class="com.ljy.anno.User"/>
public void testUser(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User)context.getBean("user");
System.out.println(user);
user.add();
}
创建对象有四个注解
- @Component
- @Controller Web层
- @Service 业务层
- @Repository 持久层
目前这四个注解功能都是一样的,都创建对象不过是为了后续版本做扩展
可以设置创建对象我单实例还是多实例
@Scope("value=prototype") //设置为多实例
--注解注入属性
- 创建一个Service类,创建dao类,在service里得到dao对象
@Service(value="userService")
public class UserService {
@Component(value="userDao")
public class UserDao {
在Service类里面定义一个Dao类的属性
注入属性的第一个注解 @Autowired 自动注入
public class UserService {
//在dao属性上面使用注解 完成对象注入
@Autowired
private UserDao userDao;
//使用注解方式不需要set方法
public void add(){
System.out.println("service...");
userDao.add();
}
}
注入属性的第二个注解 @Resource(name="") 推荐用这个 因为指定好了
@Resource(name="userDao") //name里面写注解方式创建的dao对象的value
private UserDao userDao;
-配置文件和注解混合使用
- 创建对象操作实用配置文件方式实现
- 注入属性的操作使用注解方式实现
//创建对象
<!-- 开启注解扫描
到包里面扫描 类 方法 属性 上面是否有注解
-->
<context:component-scan base-package="com.ljy"></context:component-scan>
<!-- 配置对象 -->
<bean id="service" class="com.ljy.xmlanno.BookService"></bean>
<bean id="bookDao" class="com.ljy.xmlanno.BookDao"></bean>
<bean id="ordersDao" class="com.ljy.xmlanno.OrdersDao"></bean>
//注入属性
@Resource(name="bookDao")
private BookDao bookdao;
@Resource(name="ordersDao")
private OrdersDao ordersdao;
网友评论