a 用法
<context:component-scan base-package="需要扫秒的文件的最上层目录">context:component-scan>
b 实际代码
<context:component-scan base-package="com">context:component-scan>
<context:annotation-config>context:annotation-config>
@Service
package com.service;
import org.springframework.stereotype.Service;
//@Service用于业务层,不写id默认就是首字母小写后的类名即userService
@Service
//@Scope("singleton") 也可以用@Scope注解指定是单例模式还是多例模式(原型模式)
public class UsersService {
public void login(){
System.out.println("执行用户登录业务");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.service.UsersService;
public class MyTest {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-config.xml");
UsersService us= (UsersService) ac.getBean("usersService");
us.login();
}
}
@Service("id值")
package com.service;
import org.springframework.stereotype.Service;
//@Service用于业务层,写了id就只能通过id名,不能通过类名去查找了
@Service("us")
public class UsersService {
//UsesDao的创建由容器去创建
public void login(){
System.out.println("执行用户登录业务");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.service.UsersService;
public class MyTest {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-config.xml");
UsersService us= (UsersService) ac.getBean("us");
us.login();
}
}
类名 自定义变量名= (类名) ac.getBean(类名.class);
package com.service;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
//@Service用于业务层,写了id就只能通过id名,不能通过类名去查找了,但是可以通过类名.class去查找的
@Service("us")
//@Scope("singleton") scope注解可以指定是单例还是多例
public class UsersService {
//UsesDao的创建由容器去创建
public void login(){
System.out.println("执行用户登录业务");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.service.UsersService;
public class MyTest {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-config.xml");
UsersService us= (UsersService) ac.getBean(UsersService.class);
us.login();
}
}
@Autowired 按照其下方的数据类型匹配(要求数据类型必须唯一,还是去匹配id),
默认需要该bean在容器中存在,如果不存在就报错
如果需要允许改bean为空 可以设置required=false
package com.service;
import com.dao.UsersDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@Service("us")
public class UsersService {
@Autowired
private UsersDao ud;
public void login(){
System.out.println("执行用户登录业务");
ud.login();
}
}
package com.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UsersDao {
public void login(){
System.out.println("--用户登录查询--");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.service.UsersService;
public class MyTest {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-config.xml");
UsersService us= (UsersService) ac.getBean(UsersService.class);
us.login();
}
}
@Resource 先按照名称(下方的形参名)查找 如果没有找到 再按照类型查找 都未找到 就报错
package com.service;
import com.dao.UsersDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@Service("us")
public class UsersService {
@Resource
private UsersDao ud;
public void login(){
System.out.println("执行用户登录业务");
ud.login();
}
}
package com.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UsersDao {
public void login(){
System.out.println("--用户登录查询--");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.service.UsersService;
public class MyTest {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-config.xml");
UsersService us= (UsersService) ac.getBean(UsersService.class);
us.login();
}
}
@Autowired
@Qualifier("ud")
/* @Qualifier是不能单独使用的,需要与autoWired配合使用,
找的是四大注解(@component,@service,@controller,@repository)里面所写的id值*/
package com.service;
import com.dao.UsersDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service("us")
public class UsersService {
/* @Qualifier是不能单独使用的,需要与autoWired配合使用,
找的是四大注解(@component,@service,@controller,@repository)里面所写的id值*/
@Autowired
@Qualifier("ud")
private UsersDao ud;
public void login(){
System.out.println("执行用户登录业务");
ud.login();
}
}
package com.dao;
import org.springframework.stereotype.Repository;
@Repository("ud")
public class UsersDao {
public void login(){
System.out.println("--用户登录查询--");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.service.UsersService;
public class MyTest {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-config.xml");
UsersService us= (UsersService) ac.getBean(UsersService.class);
us.login();
}
}