怎样如何做网站赚钱,的网络公司,二次元主题wordpress,建设银行网站为什么打不开Spring学习——注解开发 注解开发注解开发定义bean纯注解开发 Bean管理bean作用范围bean生命周期 依赖注入自动装配 第三方bean管理注解开发总结XML配置与注解配置比较 注解开发
注解开发定义bean
使用Component定义开发
Component(bookDao)
public class BookD… Spring学习——注解开发 注解开发注解开发定义bean纯注解开发 Bean管理bean作用范围bean生命周期 依赖注入自动装配 第三方bean管理注解开发总结XML配置与注解配置比较 注解开发
注解开发定义bean
使用Component定义开发
Component(bookDao)
public class BookDaoImpl implements BookDao {
}Component
public class BookServiceImpl implements BookService {
}核心配置文件中通过组件扫描加载bean——写到applicationContext.xml文件中
context:component-scan base-packagenuc.kang.dao.impl/
context:component-scan base-packagenuc.kang.service.impl/或者
context:component-scan base-packagenuc.kang/Spring提供Component注解的三个衍生注解 Controller用于表现层bean定义Service用于业务层bean定义Repository用于数据层bean定义
纯注解开发
Spring3.0升级了纯注解开发模式使用Java类替代配置文件开启了Spring快速开发赛道Java类替代Spring核心配置文件
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdcontext:component-scan base-packagenuc.kang//beans从xml到注解开发
Configuration//代表applicationContext.xml中的配置文件的结构
ComponentScan(nuc.kang)//配置文件中的扫描
public class SpringConfig {
}Configuration注解用于设定当前类为配置类ComponentScan注解用于设定扫描路径此注解只能添加一次多个数据请用数组格式
ComponentScan(nuc.kang.service,nuc.kang.dao)Spring3.0升级了纯注解开发模式使用Java类替代配置文件开启了Spring快速开发赛道读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象
//加载配置文件初始化容器
ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);
//加载配置类初始化容器
ApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);Bean管理
bean作用范围
使用Scope定义bean作用范围
Repository
Scope(prototype)//singleton单例---prototype非单例
public class BookDaoImpl implements BookDao {
}bean生命周期
使用PostConstruct、PreDestroy定义bean生命周期
Repository
Scope(singleton)
public class BookDaoImpl implements BookDao {public void save(){System.out.println(book dao save...);}PostConstructpublic void init(){System.out.println(init...);}PreDestroypublic void destroy(){System.out.println(destroy...);}
}依赖注入
自动装配
使用Autowired注解开启自动装配模式按类型
Service
public class BookServiceImpl implements BookService {Autowiredprivate BookDao bookDao;public void save(){System.out.println(book service save...);bookDao.save();}
}注意自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据因此无需提供setter方法 注意自动装配建议使用无参构造方法创建对象默认如果不提供对应构造方法请提供唯一的构造方法 使用Qualifier注解开启指定名称装配bean
Service
public class BookServiceImpl implements BookService {AutowiredQualifier(bookDao2)private BookDao bookDao;
}注意Qualifier注解无法单独使用必须配合Autowired注解使用 使用Value实现简单类型注入
Repository(bookDao)
public class BookDaoImpl implements BookDao {Value(kanglei)private String name;
}使用PropertySource注解加载properties文件
Configuration
ComponentScan(nuc.kang)
PropertySource({jdbc.properties,})
public class SpringConfig {
}注意路径仅支持单一文件配置多文件请使用数组格式配置不允许使用通配符*
第三方bean管理
使用Bean配置第三方bean
Configuration
public class SpringConfig {//1. 定义一个方法获得要管理的对象//2.添加Bean表示当前方法的返回值是一个beanBeanpublic DataSource dataSource() {DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/spring_db);ds.setUsername(root);ds.setPassword(root);return ds;}
}使用独立的配置类管理第三方bean
public class JdbcConfig {Beanpublic DataSource dataSource() {DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/spring_db);ds.setUsername(root);ds.setPassword(root);return ds;}
}方式一导入式
public class JdbcConfig {Beanpublic DataSource dataSource() {DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/spring_db);ds.setUsername(root);ds.setPassword(root);return ds;}
}使用Import注解手动加入配置类到核心配置词注解只能添加一次多个数据请用数组格式
Configuration
Import({JdbcConfig.class})
public class SpringConfig {
}扫描式
Configuration
public class JdbcConfig {Beanpublic DataSource dataSource() {DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/spring_db);ds.setUsername(root);ds.setPassword(root);return ds;}
}使用ComponentScan注解扫描配置类所在的包加载对应的配置类信息
Configuration
ComponentScan(nuc.kang.config,)
public class SpringConfig {
}简单类型依赖注入成员变量
public class JdbcConfig {Value(com.mysql.jdbc.Driver)private String driver;Value(jdbc:mysql://localhost:3306/spring_db)private String url;Value(root)private String userName;Value(root)private String password;Beanpublic DataSource dataSource() {DruidDataSource ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}引用类型依赖注入方法形参
Beanpublic DataSource dataSource(BookDao bookDao) {System.out.println(bookDao);DruidDataSource ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}引用类型注入只需要为bean定义方法设置形参即可容器会根据类型自动装配对象
注解开发总结
XML配置与注解配置比较