这里需要用到注解就在这例列出来了:
xml文件配置
xml配置通过四个注解来实现,
注解 描述
@Component 一般用来在身份不明的组件上
@Service 一般用在Service层
@Controller 一般用在控制层
@Repository 一般在数据库的访问层
@Resource和@Autowired的区别
注解 区别
1:默认根据name对象注入对象
@Resource
2:jdk提供的注解
3:只能根据类型注入对象
@Autowired 4:Spring框架的提供的注解
5:需要根据name注入到的对象需要和@Qualifier@一块使用
Bean作用域
作用域 说明
prototype 名词请求,都是一个新的Bean(java原型模式)
singleton bean是单例的(java单例模式)
request 再一次请求中,bean的声明周期和request同步
session bean的声明周期和session同步
首先创建一个java项目:
lib包中是jar包
Appjavaconfig类:
@Configuration
public class AppjavaConfig {
@Bean
public Book getBook(){
return new Book();
}
}
test类:
public class test {
@org.junit.Test
public void test1(){
AnnotationConfigApplicationContext ann=new AnnotationConfigApplicationContext(AppjavaConfig.class);
Book book=ann.getBean(Book.class);
System.out.println(book);
}
}
测试结果:
这里就抢到了连接;
下面来是注解取得连接赋值的方法:
创建类Spring项目
UserController类:
@Controller
public class UserController {
@Resource(name="y")
// @Autowired//String容器在实例化对像的时候会区容器中配置对应的对像赋值
private IUserService service;
public void add(String msg){
System.out.println("controller:"+service.add(msg));
//return service.add(msg);
}
dao层接口:(IUserDao)
public interface IUserDao {
public String add();
}
接口实现类:(IUserDaoImpl)
@Repository
public class UserDaoImpl implements IUserDao {
@Override
public String add(String msg) {
System.out.println("--->"+msg);
return "hello...";
}
IUserService接口类:
public interface IUserService {
public String add(String msg);
}
接口实现类:(IUserServiceImpl)
@Service("y")
public class UserServiceImpl implements IUserService {
//@Resource
@Autowired//只能根据类型查找
@Qualifier("userDaoImpl")//@Autowired要通过name查找需要和@Qualifier一起使用
private IUserDao dao;
@Override
public String add(String msg) {
return dao.add(msg);
}
UserController类:
@Controller
public class UserController {
@Resource(name="y")
// @Autowired//String容器在实例化对像的时候会区容器中配置对应的对像赋值
private IUserService service;
public void add(String msg){
System.out.println("controller:"+service.add(msg));
//return service.add(msg);
}
applictionContext.xml配置文件:
<?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-4.3.xsd">
<!-- 扫描com.sxt下的配置注解 -->
<context:component-scan base-package="com.sxt.*"></context:component-scan>
</beans>
运行结果:
Spring特殊扫描
创建类:
UserController类:
@Controller
public class UserController {
@Resource
//@Autowired//String容器在实例化对像的时候会区容器中配置对应的对像赋值
private IUserService service;
public void add(String msg){
System.out.println("controller:"+service.add(msg));
//return service.add(msg);
}
IUserDao接口:
public interface IUserDao {
public String add(String msg);
}
接口实现类:(IUserDaoImpl)
@Repository
public class UserDaoImpl implements IUserDao {
@Override
public String add(String msg) {
System.out.println("--->"+msg);
return "hello...";
}
IUserService接口
public interface IUserService {
public String add(String msg);
}
接口实现类:(UserServiceImpl)
@Service
public class UserServiceImpl implements IUserService {
@Resource
//@Autowired//只能根据类型查找
//@Qualifier("userDaoImpl")//@Autowired要通过name查找需要和@Qualifier一起使用
private IUserDao dao;
@Override
public String add(String msg) {
return dao.add(msg);
}
test类:
public class test {
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext("applictionContext.xml");
UserController userController=app.getBean(UserController.class);
userController.add("aaa");
}
applictionContext.xml配置文件:
<?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-4.3.xsd">
<!-- 开启扫描 Component , Service , Controller , Repository-->
<context:component-scan base-package="com.sxt.controller" use-default-filters="false">
<!-- 包含 -->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<context:component-scan base-package="com.sxt.service.imp,com.sxt.dao.imp" use-default-filters="true">
<!-- 排除 -->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
</beans>
测试结果:
利用java注解法不需要application.xml配置文件了
UserController 类:@Controller
public class UserController {
@Resource(name="aaa")
// @Autowired//String容器在实例化对像的时候会区容器中配置对应的对像赋值
private IUserService service;
public void add(String msg){
System.out.println("controller:"+service.add(msg));
//return service.add(msg);
}
dao层实现类:(UserDaoImpl)
@Repository
public class UserDaoImpl implements IUserDao {
@Override
public String add(String msg) {
System.out.println("--->"+msg);
return "hello...";
}
UserService层实现类:(UserServiceImpl)
@Service("aaa")
public class UserServiceImpl implements IUserService {
//@Resource
@Autowired//只能根据类型查找
@Qualifier("userDaoImpl")//@Autowired要通过name查找需要和@Qualifier一起使用
private IUserDao dao;
@Override
public String add(String msg) {
return dao.add(msg);
}
JavaConfig配置类:
@Configuration
//添加扫描
@ComponentScan(value="com.sxt.*",useDefaultFilters=true,includeFilters=
{@ComponentScan.Filter(type=FilterType.ANNOTATION,value=Service.class)})
public class JavaConfig {
}
测试结果: