文章目录
- 添加约束内容
- 开启注解
- @Component
- 编写userServer 注解@Component
- Test 测试类
- 在web中一些注解
- 在xml中开启注解 并配置注解位置 使spring扫描到注解
- Dao
- service
- action
- 测试代码
添加约束内容
xmlns:context="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
<?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:p="http://www.springframework.org/schema/p"
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">
开启注解
<!-- 开启注解-->
<context:annotation-config></context:annotation-config>
<!-- 注解位置 扫描该路径下的所有注解-->
<context:component-scan base-package="org.ccit.com.service"></context:component-scan>
@Component
编写userServer 注解@Component
package org.ccit.com.service;
import org.ccit.com.model.User;
import org.springframework.stereotype.Component;
/**
* @program: Spring01
* @description
* @author: LIANG
* @create: 2021-04-01 13:11
**/
@Component
public class UserServiceImpl implements IUserService{
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public void add() {
System.out.println("创建用户"+username);
}
@Override
public void add(User user) {
System.out.println("添加用户:"+user);
}
}
Test 测试类
import org.ccit.com.model.User;
import org.ccit.com.service.IUserService;
import org.ccit.com.service.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @program: Spring01
* @description
* @author: LIANG
* @create: 2021-04-18 20:04
**/
public class Test08_zhujie {
@Test
public void test1(){
//注解来取代xml
/*默认情况下 注解不生效 开启注解功能
* 在xml中配置下面两行代码*/
ApplicationContext context=new ClassPathXmlApplicationContext("Beans09_zhujie.xml");
//如果 @Component没有配置id 使用class
IUserService service= (IUserService) context.getBean(UserServiceImpl.class);
User user=new User();
user.setUsername("123");
service.add(user);
}
}
在web中一些注解
//类注解
@Controller //action
@service //service
@Repository("myUserDaoImpl") //配置dao层
@Scope("prototype") //多例 默认是单例
//属性注解
@Autowired //spring会自动给userDao赋值 无需getset方法
@Qualifier("myUserDaoImpl") //根据指定的id注入属性 一般不用
@Resource(name= "myUserDaoImpl") //等效上边两行
//方法注解
@PostConstruct //相当于init-method
@PreDestroy //相当于 destroy-method
//等同下图xml配置
在xml中开启注解 并配置注解位置 使spring扫描到注解
<?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:p="http://www.springframework.org/schema/p"
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">
<!-- 开启注解-->
<context:annotation-config></context:annotation-config>
<!-- 注解位置 -->
<context:component-scan base-package="org.ccit.com"></context:component-scan>
<!-- xml配置
<bean id="userDao" class="org.ccit.com.dao.UserDaoImpl"></bean>
<bean id="userService" class="org.ccit.com.service.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userAction" class="org.ccit.com.web.action.UserAction">
<property name="userService" ref="userService"></property>
</bean>
-->
</beans>
Dao
package org.ccit.com.dao;
import org.ccit.com.model.User;
import org.springframework.stereotype.Repository;
/**
* @program: Spring01
* @description
* @author: LIANG
* @create: 2021-04-24 16:08
**/
//配置bean
@Repository("myUserDaoImpl") //配置dao层
public class UserDaoImpl implements IUserDao {
@Override
public void add(User user) {
System.out.println("Dao层 add方法");
}
}
service
package org.ccit.com.service;
import org.ccit.com.dao.IUserDao;
import org.ccit.com.dao.UserDaoImpl;
import org.ccit.com.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
/**
* @program: Spring01
* @description
* @author: LIANG
* @create: 2021-04-01 13:11
**/
@Service
public class UserServiceImpl implements IUserService{
@Autowired
//spring会根据类型自动给userDao赋值 无需getset方法
//如果是一个接口 从容器中找接口实现类
//如果是一个类 直接从容器中找该类
@Qualifier("myUserDaoImpl") //根据指定的id注入属性 一般不用
private IUserDao userDao;
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public void add() {
}
@Override
public void add(User user) {
System.out.println("创建用户"+user);
userDao.add(user);
}
}
action
package org.ccit.com.web.action;
import org.ccit.com.model.User;
import org.ccit.com.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
/**
* @program: Spring01
* @description
* @author: LIANG
* @create: 2021-04-24 16:45
**/
@Controller
public class UserAction {
@Autowired
private IUserService userService;
public void save(User user){
System.out.println("action save方法"+user);
userService.add(user);
}
测试代码
@Test
public void test03() throws Exception{
//注解的使用
//web开发流程 action->service->dao
ApplicationContext context=new ClassPathXmlApplicationContext("Beans10_zhujie.xml");
UserAction userAction = (UserAction)context.getBean(UserAction.class);
User user=new User();
user.setUsername("111");
user.setPassword("123");
userAction.save(user);
//关闭容器 调用自定义的销毁方法
context.getClass().getMethod("close").invoke(context);
}