注解开发
用于java web开发中替代xml配置文件的功能
@Component //使用在类上用于实例化Bean,下面三个是他的衍生注解,(加强代码可读性)
@Controller //使用在web层类上用于实例化Bean
@Service //使用在service层类上用于实例化Bean
@Repository //使用在dao层上用于实例化Bean
@Autowired //使用在类字段上用于根据类型依赖注入
@Qualifier //结合@Autowired+@Qualifier,按照名称进行注入
@Resource //相当于@Autowired+@Qualifier,按照名称进行注入
@Value //注入普通属性
@Scope //标注Bean的作用范围
@PostConstruct //使用在方法上标注该方法是Bean的初始化方法
@PreDestory //使用在方法上标注该方法是Bean的销毁方法
@Configuration //用于指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解
@ComponentScan //用于指定Spring在初始化时容器要扫描的包
@Bean //使用在方法上,标注该方法的返回值存储到Spring容器中
@PropertySource //用于加载properties文件中的配置
@Import //用于导入其他类
Component:
@Component("userDao")
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("save running");
}
public UserDaoImpl() {
}
}
@Autowired
//@Component("userService")
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired //按照数据类型从Spring容器中进行匹配注入
private UserDao userDao;
}
@Qualifier
//@Component("userService")
@Service("userService")
public class UserServiceImpl implements UserService {
//<constructor-arg name="userDao" ref="userDao"></constructor-arg>
@Autowired //按照数据类型从Spring容器中进行匹配注入
@Qualifier("userDao") //是按照id值从容器中进行匹配 但要结合Autowired一起使用
private UserDao userDao;
}
@Resource
//@Component("userService")
@Service("userService")
public class UserServiceImpl implements UserService {
//<constructor-arg name="userDao" ref="userDao"></constructor-arg>
@Resource("userDao")
private UserDao userDao;
}
@Value:
//@Component("userService")
@Service("userService")
public class UserServiceImpl implements UserService {
//@Value("Spring")
@Value("${jdbc.driver}")//配置properties文件后使用
private String driver;
}
@Scope:
//@Component("userService")
@Service("userService")
//@Scope("prototype")//多例
@Scope("singleton")//单例
public class UserServiceImpl implements UserService {
@Value("${jdbc.driver}")
private String driver;
@Autowired //按照数据类型从Spring容器中进行匹配注入
@Qualifier("userDao") //是按照id值从容器中进行匹配 但要结合Autowired一起使用
private UserDao userDao;
}
@PostConstruct() @PreDestroy()
//@Component("userService")
@Service("userService")
//@Scope("prototype")
@Scope("singleton")
public class UserServiceImpl implements UserService {
@PostConstruct()//初始化之后
public void init(){
System.out.println("Service对象的初始化方法");
}
@PreDestroy()//销毁之前
public void destory(){
System.out.println("Service对象的销毁方法");
}
}
@Configuration
@Configuration//标致该类是Spring的核心配置类
@ComponentScan("com")//配置组件扫描
@Import(DataSourceConfiguration.class)//参数列表是一个数组,加载其他配置类
public class SpringConfiguration {
}
@ComponentScan
@Configuration//标致该类是Spring的核心配置类
@ComponentScan("com")//配置组件扫描
public class SpringConfiguration {
}
相当于xml中的
<!--配置组件扫描-->
<context:component-scan base-package="com"/>
@Bean @PropertySource
以c3p0连接池的配置为例
配置文件jdbc.properties有
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/employee
jdbc.username=root
jdbc.password=123456
//<context:property-placeholder location="classpath:jdbc.properties"/>
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean("dataSource")
public DataSource getDataSource() throws PropertyVetoException {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
}
}
@Import
@Configuration//标致该类是Spring的核心配置类
@Import(DataSourceConfiguration.class)//参数列表是一个数组,加载其他配置类
public class SpringConfiguration {
}