0
点赞
收藏
分享

微信扫一扫

注解配置


文章目录

  • ​​添加约束内容​​
  • ​​开启注解​​
  • ​​@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配置

注解配置_spring

在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);
}


举报

相关推荐

0 条评论